告知URL
http://www.groupy.jp/study_groups/1/study_group_schedules/4
以下の書籍をターゲットとした読書会なのです。
![]() | HerokuではじめるRailsプログラミング入門 (2013/03/15) 掌田 津耶乃 商品詳細を見る |
参加者は4人かな。2人欠席で、ちょと少なめ。
場所は新宿のマルチメディアスクールWAVEです。今回も会場の無料提供、感謝!
Railsのマイグレーションの仕組みとかに興味を持ったのがキッカケで始めたRailsのお勉強ですが、前回の5章に引き続き今回の6章もマイグレーション絡みで、興味深く勉強することができました。
今回は私も6-3節の発表を担当しました。
6-3節はテーブル間の関連付けを管理する機能である「アソシエーション」に関する説明がメインです。
この仕組みはJavaメインの私にとっては非常に興味深いですねー
ふつーはRDBに外部キーを使って参照制約を貼りますが、Railsはフレームワーク側でこの仕組みを保証するとのこと。
SQLアンチパターン読書会でも「キーレスエントリー」の章で参照制約の話を扱いましたが、そのときに紹介されててたRailsの仕組みがようやくわかりかけてきた気がします。
has_one、has_many、belongs_toという3種のアソシエーションが用意されているのも興味深いですね。
RDBだとhas_manyが標準だと思いますが、has_oneも、RDBだとUNIQUE KEY制約を付ければ実現できますね。
成果物は以下にアップロードしておきました。
■Herokuにデプロイしたアプリケーション
(1) Memo登録画面
http://makopi23-rails-chapter06.herokuapp.com/memo/index
(2) Sample登録画面(Sampleに紐づいたMemo情報も合わせて表示)
http://makopi23-rails-chapter06.herokuapp.com/sample/index
■ソースコード(Github)
https://github.com/makopi23/Rails_Programming_Using_Heroku/tree/master/chapter06/myapp
あと、6-2節でエラーメッセージを日本語で表示させる方法が出てきますが、これは rails-i18n というライブラリを使えばもうちょっとスマートにできるそうです。
この辺のブログが参考になるのかもしれない。↓
Railsの多言語化対応 I18nのやり方を整理してみた!【国際化/英語化】
http://morizyun.github.io/blog/i18n-english-rails-ruby-many-languages/
あと話に出たのが、ループでぐるぐる回しながら一覧表示する処理ではID単位でSQLが発行されるらしいとのこと。
なので、この仕組みを理解した上で性能とかに気をつける必要がありそうです。
あとは、SQLが発行されるのがControllerじゃなくてViewになることがあるので、ログを追うときに注意、との話がありました。
今回の6章だと、画面へ表示するデータの取得は *.html.erb ファイルに書いてたりします。 例えばリスト6-41とか。
<td><ol> |
これだと確かに、Viewデータ取得処理が走ってSQLが発行されそうです。
あと、どんなSQLが裏で走ってるのか、フレームワーク任せにすると見えなくなるのも一長一短でしょうかね。
★感想:
実際にRailsのマイグレーションやアソシエーションを写経することで理解が深まりました。
こーゆう仕組みはJavaメインの私にとっては新鮮です。
次回は7-3節の発表を担当します。
参加者の皆さん、ありがとうございました。
- 関連記事
-
- SQLアンチパターン読書会 「ラウンディングエラー」 に参加しました
- "勉強会「HerokuではじめるRailsプログラミング入門 (テキスト輪読)」 第6章 モデルをさらに使いこなそう"に参加しました
- 「XP祭り2013 〜 XP 〜」に参加しました