У меня странная ситуация, связанная с необходимостью двойного внутреннего соединения. Я попробовал запрос, который мне нужен, я просто не знаю, как сделать рельсы.Двойное соединение с habtm в ActiveRecord
Паспорта
- счета (has_many: сайты)
- сайта (HABTM: пользователи, belongs_to: счет)
- пользователя (HABTM: сайты)
Игнорирование что они habtm или что-то еще, я могу сделать их habtm или has_many: через.
Я хочу быть в состоянии сделать
@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 вместо этого, но он работает лучше для многих других вещей, если он поддерживается так, как он есть (пользователи < -> места).
Спасибо! Любите скринкасты кстати. –