我有一个优化问题。我搜索如何使用ActiveRecord来请求获取one_to_one或one_to_many中没有任何链接的所有实体。关系one_to_one:获取非链接“belongs_to”实体的列表
我:
class Model1 < ActiveRecord::Base
has_one :model2
...
和
class Model2 < ActiveRecord::Base
belongs_to :model1
...
如果我想所有model2s非链接的列表中,我只需要做:
unlinked_model2s = Model2.where(:model1_id => nil)
但如何我对model1s做同样的事情吗?我会列出所有未链接到model2的model1。
我试过很多东西,但做它的工作的唯一办法,是向所有的请求一个接一个,这是可怕的:
unlinked_model1s = Array.new
Model1.all.each do |model1|
unless model1.model2
unlinked_model1s << model1
end
end
谢谢您的帮助!
谢谢你的回答! Model1.joins(“LEFT JOIN model2s ON(model2s.model1_id = model1s.id)”)。其中(:model2s => {:model1_id => nil})完美地工作!非常感谢你 – Polopollo 2013-03-20 12:13:42