У меня вопрос оптимизации. Я ищу, как использовать ActiveRecord для выполнения запроса для получения всех объектов в one_to_one или one_to_many, у которых нет ссылки.отношение one_to_one: получить список несвязанных объектов "принадлежит_to"
у меня есть:
class Model1 < ActiveRecord::Base
has_one :model2
...
и
class Model2 < ActiveRecord::Base
belongs_to :model1
...
Если я хочу список всех model2s без ссылок, я просто должен сделать:
unlinked_model2s = Model2.where(:model1_id => nil)
Но как я сделать то же самое для model1s? У меня будет список всех моделей1, которые не связаны с моделью2.
Я пробовал много вещей, но единственный способ сделать это работает, это на все запросы один за другим, что попало:
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