У меня есть набор моделей Active Record, настроенный так:
Account
has_many :account_groups
has_many :groups, :through => :account_groups
Posts
has_many :post_groups
has_many :groups, :through => :post_groups
Это конфигурация безопасности, и мне нужно иметь возможность запрашивать сообщения, принадлежащие группе, к которой у учетной записи есть доступ .... поэтому я бы хотел сказать:
@account.posts
И получите отфильтрованный запрос сообщений, принадлежащих группам, которые перекрывают группы, к которым у учетной записи есть доступ ... но я не могу понять правильный синтаксис.
Помощь.
Для пояснения, SQL, который я ищу, будет выглядеть так:
SELECT DISTINCT posts.* FROM accounts
JOIN account_groups ON account_groups.account_id = accounts.id
JOIN groups ON groups.id = account_groups.group_id
JOIN post_groups ON post_groups.group_id = groups.id
JOIN posts ON posts.id = post_groups.post_id
WHERE accounts.id = 2
Мне бы очень хотелось, чтобы это была именованная область или отношение, а не только искатель sql.