Я следую Railscast Советы по созданию другой модели для поддержания many-to-many
отношений. Однако у меня возникли проблемы с извлечением данных о транзитивных отношениях.
Представьте себе, что есть 3 модели со многими ко многим: User <-> Color <-> Shades
Я сделал еще 2 модели:
ColorLiking (maintains User <-> Color), DiffShades (maintains Color <-> Shades)
Вопрос
Теперь, если все настроено правильно ... как мне найти Shades
, который принадлежит User
?
Как я настрою эти отношения?
class User < ActiveRecord::Base
has_many :shades, :through=>:diffShades, :source => :color
end
выше, похоже, не работает ...
При использовании SQL следующий запрос будет работать:
select * from shades
where id in (select shade_id from diffshades
where color_id in (select color_id from colorlikings
where user_id = ?))