我有一個優化問題。我搜索如何使用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