我正在关注Railscast建议使用不同的模型来维持many-to-many
关系。但是,我无法提取传递关系数据。
想象一下,有3个模型具有多对多:User <-> Color <-> Shades
我又制作了两个型号:
ColorLiking (maintains User <-> Color), DiffShades (maintains Color <-> Shades)
问题
现在,如果一切设置正确...如何找到属于Shades
的{{1}}?
我将如何设置这种关系?
User
以上似乎不起作用......
使用SQL可以使用以下查询:
class User < ActiveRecord::Base
has_many :shades, :through=>:diffShades, :source => :color
end
答案 0 :(得分:0)
这是航空代码,可能至少部分错误,但可能对您进行富有成效的调查非常有用。
长话短说,ActiveRecord不会让你一直到User.shades方法只是w /各种:has和:属于调用。但是编写自己的模型方法来做到这一点并不太可怕。
class User < ActiveRecord::Base
has_many :color_likings
has_many :colors, :through => :color_likings
def get_shades
colors.collect {|c| c.shades.to_a}.flatten
end
end
class ColorLiking < ActiveRecord::Base
belongs_to :user
belongs_to :color
end
class Color
has_many :color_likings
has_many :users, :through => :color_likings
end
class DiffShade
belongs_to :color
belongs_to :shade
end
class Shade
has_many :diff_shades
has_many :colors, :through => :diff_shades
end