例如,我有2个模型Drummer
和Video
如果我使用一对多关联drummer has_many videos
和video belongs_to drummer
,
所以我可以在双方使用该方法:video.drummers
或drummer.videos
但是当我使用多态关联时,我认为这是正确的,因为,会有很多模型有视频,这有意义使视频模型具有多态性
我可以使用drummer.videos
,
但我不知道如何让视频属于哪个鼓手
video.drummer
不起作用,
任何人都可以告诉我如何做到这一点,以及我在设置关联后可以使用的其他方法。
由于
答案 0 :(得分:0)
首先,您需要添加迁移文件以在视频中添加列:
class AddPolymorphicReferenceToVideos < ActiveRecord::Migration
def self.up
add_column :videos, :video_holder_id, :integer
add_column :videos, :video_holder_type, :string
add_index :videos, :video_holder_id
add_index :videos, :video_holder_type
end
def self.down
# just remove indexes and columns above
end
end
然后,您可以在Video
模型中添加多态关联:
class Video < ActiveRecord::Base
belongs_to :video_holder, :polymorphic => true
end
然后改变你的Drummer
:
class Drummer < ActiveRecord::Base
has_many :videos, :as => :video_holder
end
现在您可以使用多态关联:
drummer.videos # => an videos array
video.video_holder # => a model holds the video