鼓手和视频是多对多关联,因为有时会有多个鼓手出现在一个视频剪辑中
Cy钹和视频只是多对多关联,原因相同
事件和视频是一对多的,因为一个视频只代表一个事件是有意义的
所以对于前两个我的解决方案是在两侧使用两个has-and-belongs-to-many-many关联符号,而对于第三个我使用简单的一对多: 这是代码:
class Drummer < ActiveRecord::Base
has_and_belongs_to_many :videos
end
class Cymbal < ActiveRecord::Base
has_and_belongs_to_many :videos
end
class Video < ActiveRecord::Base
has_and_belongs_to_many :drummers
has_and_belongs_to_many :cymbals
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :videos
end
但我认为多态是更好的解决方案,视频应该应用两个很多其他模型,但我不知道如何建立多对多的多态关联,我已经问了一个关于这个的问题
答案 0 :(得分:1)
这个怎么样:
class Interpreter < ActiveRecord::Base
belongs_to :video
end
class Drummer < Interpreter
end
class Cymbal < Interpreter
end
class Video < ActiveRecord::Base
has_and_belongs_to_many :interpreters
has_and_belongs_to_many :drummers
has_and_belongs_to_many :cymbals
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :videos
end
Video.first.interpreters
应该返回所有的德鲁姆和钹,而Video.first.drummers
和Video.first.cymbals
只会返回相应的模型
Cymbals
和Drummers
将共享相同的数据库表interpreters
答案 1 :(得分:0)