RoR 3.2.13 の熱心な読み込み部分をよりよく理解できるように、プロジェクトをこれに単純化しました。これらは私のクラスです:
class Person < ActiveRecord::Base
attr_accessible :name
has_many :posts
end
と
class Post < ActiveRecord::Base
attr_accessible :name, :person_id
belongs_to :person
end
私が何かをするとき
people_data = Person.includes(:posts)
IRB は次の SQL を示しています。
Person Load (1.3ms) SELECT `people`.* FROM `people`
Post Load (0.7ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`person_id` IN (1, 2)
結果のオブジェクトは次のようになります。
=> [#<Person id: 1, name: "Ernie">, #<Person id: 2, name: "Bert">]
人物オブジェクトが 2 つしかなく、投稿がないことに注意してください。人物とその投稿で単純なデータ構造を取得するにはどうすればよいですか。これを単一の命令で実行したいのですが、ピープル配列で foreach を実行したくありません。
私はこのようなものを期待しています:
[#<Person id: 1, name: "Ernie">, [#<Array 0 => #<Post id:1, name: "Hi">, 1 => #<Post id:2, name: "Hello"> > ....