多段アソシエーション時に2段目以降の値が取れない。
僕は勉強不足なのと現状バージョンを変えられないという案件の都合で
当面Railsのバージョンは1.2.6くらいで書いています。2.0系ではないので
その点ご了承ください。
これもin progressモード。こんな暫定対処じゃいけてなさすぎる。
まあ結論から言うと[0].attributes['カラム名']で値を取得した。
これで通じた人はあとはヌルーで大丈夫だと思います。というか
どうすれば解決出来るか教えてくださいorz
とりあえずいい具体例が思いつかないな…うーん。
お仕事ちっくにいくと、社員管理系の話にしとくか。
例として適しているかは不明。
会社の管理システムみたいなものがあったとする。所属部署情報から社員の
住所を引っ張るというシナリオを考える。
モデルとしては部署モデル(Section)、社員モデル(Staff)、住所モデル(Address)。
この会社は特別チームを編成することがあって、単純に部署と社員は1:nに
ならないとする。
Staffはaddress_idを持ち、Addressの実名はnameで設定される。
SectionController::listで住所を表示させたい。
Section-Staff:has_many/through
Staff-Address:has_one
こんな関連設定をしたとする。
こうすれば出ると思ったら出ない。
ここで、addressについてNo Method Errorになる。
<%=h section.staffs.address.name >
Section->Staffまでは情報が取れている。
なんで関連張ってあるのにその先に引っ張っていかないのかがわからなかった
<%=h section.staffs.inspect >
ところ。暫定対処としては、この中のaddress_idをとれればAddress.find
で持ってこられるわけなので、そのように切り替えてしまおうか、という話。
でもそもそもstaffs以降でNo Method Errorなので、中身はどうすれば取れるのか?
試行錯誤した結果、[0].attributesという指定の仕方で取れることはわかった。
だがさすがにこれはいけてないだろうと。何が足りていないのかちょっとわからない。
<%=h Address.find(section.staffs[0].attributes['address_id']).name >