Rails3の結合の属性にアクセスできません。
場所と住所の2つのモデル/テーブルがあります。1つの場所に多くの住所を含めることができます(つまり、特定の番地、「の角」の住所など)。歴史的な理由から、テーブルは標準のRailsの規則に従っていません。
class Place < ActiveRecord::Base
set_table_name :PLACE
set_primary_key :PLACE_ID
has_many :addresses, :class_name => "Address", :foreign_key => :PLACE_ID
end
と
class Address < ActiveRecord::Base
set_table_name :ADDRESS
set_primary_key :ADDRESS_ID
belongs_to :place, :foreign_key => "PLACE_ID"
end
1つの特定の場所のすべてのアドレスを取得しようとしています。
pa = Place.joins(:addresses).where(:place_id => 68)
生成されるSQLは正常に見えます。
pa.to_sql
"SELECT [PLACE].* FROM [PLACE] INNER JOIN [ADDRESS] ON [ADDRESS].[PLACE_ID] = [PLACE].[PLACE_ID] WHERE ([PLACE].[place_id] = 68)"
その特定の場所には6つの住所が関連付けられているため、返されるリレーションにも適切なサイズがあります。
irb(main):050:0> pa.size
=> 6
ただし、返されるリレーションpaには、Placeモデルの属性のみが含まれ、Addressモデルの属性は含まれていません。
Rails3より前以前はfind_by_sqlを実行し、返されたハッシュで2つの結合されたテーブルの属性に簡単にアクセスできましたが、Rails3に結合されたAddressテーブルの属性を表示させることはできません。
私はここで非常に基本的な何かを見逃しているに違いありません-誰かが私にそれを指摘することを気にしますか?