Вложенная ассоциация Active Record - PullRequest
0 голосов
/ 13 июня 2018

У меня есть ассоциация, в которой я хотел бы получить:

Person > has_many :animals > has_many (through animals) :dogs 
       > belongs_to :leash > belongs_to :collar

Я хотел бы получить все возможные варианты :collar, чтобы я мог проверить, есть ли collar_id для этого конкретного Person

Чтобы проверить экземпляр :leash, я так и сделал (person - это экземпляр Person):

person.dogs.where(leash_id: id_of_leash)

Но мне нужно теперь получить одинуровень глубже, чтобы определить, найден ли идентификатор воротника у этого конкретного персонажа.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Я не уверен, что это хорошая практика - смешивать запрос с итератором, но я нашел, что это работает, и ясно прочитал:

person.dogs.to_a.detect{ |d| d.leash.collar.id == collar_id }

0 голосов
/ 13 июня 2018

Вы можете попробовать это:

person.dogs.includes (поводок:: воротник) .where ("collar.attribute =?", Условие)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...