2013-09-29 4 views
0

Я хочу написать что-то вроде этогоДоступ ко всем подмодели из соотношения ActiveRecord

User.groups.members.addresses 

Что мне нужно, это массив всех адресов, которые пользователь имеет доступ. Если пользователь находится в двух группах, каждая группа имеет 2 уникальных пользователей с уникальными адресами Я хочу, чтобы массив 4 адресов

Использование Рубин на рельсы 4

ответ

1

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

class Address 
    scope :by_user, -> user { joins(:member).joins(:group).where(user: {id: user.id})}} 
end 

использование:

Address.by_user(@user) 
+0

Интересно. Не могли бы вы объяснить, как это работает? Кажется, не найдет никакой хорошей документации относительно объединений. –

+0

Это концепция SQL, которую ActiveRecord упрощает: http://guides.rubyonrails.org/active_record_querying.html#joining-tables – Matt

Смежные вопросы