Rails 3 + ActiveRecord - выберите с условием для ассоциации - PullRequest
0 голосов
/ 30 марта 2012

У меня есть метод Car (таблица cars), владельцем которого является has_many (таблица owners).Как выбрать все автомобили, у которых нет владельцев (== в таблице owners нет ни одной строки с идентификатором соответствующего автомобиля)?

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Я бы сделал это, как показано ниже в модели ....

@cars_without_owners = Car.where("owner_id = ?", nil)

или, чтобы быть в безопасности ....

@cars_without_owners = Car.where("owner_id = ? OR owner_id = ?", nil, "")
1 голос
/ 30 марта 2012

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

Car.where("not exists (select o.id from owners as o where o.car_id = cars.id)")
...