我有以下型号:
User < ActiveRecord::Base
belongs_to :person
end
Person < ActiveRecord::Base
has_one :user
end
如果我希望User在加载时加载Person,我会这样做:
User.includes(:person)
问题是在belongs_to-has_many关系中使用2个查询,这很好,但在这种情况下,我认为最好使用JOIN并只使用一个查询。
如果我User.join(:person)
,它将加入:person
,但不会加入选择的陈述和:user
的属性。
我该怎么做?
答案 0 :(得分:0)
我发现使用:
User.includes(:person)
执行2个查询...但是,如果您需要在查询中使用:person列,ActiveRecord会自动检测它并在单个查询中使用连接转换2个查询
User.includes(:person).where('person.name=?', 'something')
我永远不会被Rails惊呆了^^