我已经将我的项目简化为这样,所以我可以更好地理解 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 个人员对象,没有帖子。我怎样才能得到一个简单的数据结构,其中包含人员及其帖子。我想在一条指令中执行此操作,我不想在 people 数组中执行 foreach。
我期待这样的事情:
[#<Person id: 1, name: "Ernie">, [#<Array 0 => #<Post id:1, name: "Hi">, 1 => #<Post id:2, name: "Hello"> > ....