我有以下型号:Active Record的关系有许多通过
class FavoriteDirectorSet < ActiveRecord::Base
has_many :links
has_many :directors, through: :links
end
class Link < ActiveRecord::Base
belongs_to :favorite_director_set
belongs_to :director
end
class Director < ActiveRecord::Base
has_many :links
has_many :favorite_director_sets, through: :links
has_many :movies
end
class Movie < ActiveRecord::Base
belongs_to :director
end
我已经通过链接在一起的作用域进入建筑物查询,但我不清楚如何打破这一轮下来。如何创建与指定FavoriteDirectorSet ID匹配的电影的活动记录关系对象?
UPDATE
我有两个解决方案的工作( “favourite_director” 简称FD):
1)@rubyman选项1:
fd_sets = FDSet.find(:fd_set_id)
res = Movie.where('director_id IN (?)', fd_sets.directors.map(&:id))
2)@rubyman选项2:
res = Movie.joins(:director=>[:links=>:fd_set]).
where("fd_sets.id = ?", :fd_set_id)
可以”你只需加入favorite_director_set.fk_director = movie.fk_director中最喜欢的导演设置? – mkk
@mkk。谢谢。我认为这很有道理,但恐怕你需要为我拼出来。即你会说Movie.joins(:什么?)... –