У меня странная ситуация, связанная с необходимостью двойного внутреннего соединения. Я попробовал запрос, который мне нужен, я просто не знаю, как заставить рельсы делать это.
Данные
- Аккаунт (has_many: sites)
- Сайт (habtm: пользователи, принадлежит_ к аккаунту)
- Пользователь (habtm: sites)
Проигнорируйте, что они habtm или что-то еще, я могу сделать их habtm или has_many: through.
Я хочу быть в состоянии сделать
@user.accounts
или
@account.users
Тогда, конечно, я смогу сделать
@user.accounts < @some_other_account
А затем включите в @ user.sites все сайты из @ some_other_account.
Я возился с habtm и has_many: до конца, но не могу заставить его делать то, что я хочу.
В основном мне нужно получить такой запрос (скопировано с phpmyadmin. Протестировано и работает):
SELECT accounts.*
FROM accounts
INNER JOIN sites ON sites.account_id = accounts.id
INNER JOIN user_sites ON sites.id = user_sites.site_id
WHERE user_sites.user_id = 2
Могу ли я сделать это? Это даже хорошая идея, чтобы это двойное соединение? Я предполагаю, что это будет работать лучше, если пользователи сначала будут иметь связь с учетными записями, а затем будут беспокоиться о получении @ user.sites, но это будет работать лучше для многих других вещей, если оставить все как есть (users <-> сайты).