ActiveRecord находят с включением, условия на включении, которые не влияют на родительский - PullRequest
1 голос
/ 22 сентября 2010

У меня есть две модели:

class Parent < ActiveRecord::Base
  has_many :children
end

class Child < ActiveRecord::Base
  belongs_to :parent
end

Я хочу найти всех родителей и их детей, с условиями только для детей.НО, если у родителя нет детей, соответствующих этому критерию, я все еще хочу родителя.

Я пробовал это:

Parent.all(:include => :children, :conditions => {'children.some_condition' => 'some_value'})

Однако это не возвращает родителей, у которых нет подходящих детей.Я хочу ВСЕХ родителей и только детей тех родителей, которые соответствуют моему состоянию.

К сожалению, я использую Rails 2.1.1.Я бы хотел обновить, но сейчас это не мой главный приоритет, поэтому учтите, что существует ограничение в возможной реализации.
РЕДАКТИРОВАТЬ: Очистить, только что обновленный до 2.3.6, было довольно безболезненно

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 22 сентября 2010

Я не совсем уверен, будет ли он работать с Rails 2.1.1, но думаю, что так и должно быть.

Ваше условие применяется ко всем записям, в том числе и к тем, у которых нет детей. Поэтому вам нужно добавить дополнительное условие, например:

Parent.all(:include => :children, :conditions => ["children.some_condition = ? OR children.id is null", "some_value"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...