1

Есть ли особый способ вызова объекта, если вы хотите добавить предложение where, относящееся к отношениям, которые были определены в модели.Селекторы, в которых есть отношения

Примером может быть то, что у меня есть изображение, изображение принадлежит_to или has_many (независимо от пород вашей лодки) категории, и я хочу выбрать все изображения, которые не имеют связанных категорий.

Так что для простого belongs_to я мог бы просто сказать:

Image.where('category_id is null') 

Но есть лучший способ сделать это, так как отношения были четко определены в модели?

ответ

0

Вы чувствуете себя некомфортно, используя where с string clause? У меня такое чувство каждый раз, когда я использую where.

Вы также можете сделать

Image.where(:category_id=>nil)

или использовать динамический метод поиска

Image.find_all_by_category_id(nil)

или нагрузки через ассоциацию @images = Category.find(some_cat_id).images

(Это один не работает для ноль)

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

+0

Его не то, что я чувствую себя неудобно, используя строковые положения, его только что модели все там, так что имеет смысл там, чтобы ссылаться на сами отношения, а не прибегать к ссылке на саму базу данных , это вроде отрицает точку модели – Rumpleteaser

+0

Извините за неправильную формулировку. Мне неудобно использовать «строки», потому что я чувствую, что не нужно писать какие-либо запросы. все должно быть сделано самой ассоциацией модели. –

0

Попробуйте это:

Image.find(:all, :conditions => 'category_id is null')