现在,我与VideoVote有很多很多的关联作为独立记录。
class VideoVote < ActiveRecord::Base
belongs_to :user
belongs_to :video
end
class User < ActiveRecord::Base
has_many :video_votes
has_many :voted_videos,
:through => :video_votes,
:source => :video
end
class Video < ActiveRecord::Base
has_many :video_votes
has_many :voted_users,
:through => :video_votes,
:source => :user
end
但是,我想把它变成一个多态关联,其中注释也可以有很多VideoVotes(我意识到这很令人困惑,所以我应该把它改成Votes)。 (另外,视频会有很多评论。)我该怎么做?
答案 0 :(得分:1)
您首先要将voteable_id:integer
和voteable_type:string
添加到您的video_votes表格中。
然后你的模型看起来像:
class VideoVote < ActiveRecord::Base
belongs_to :voteable, :polymorphic => true
end
class Comment < ActiveRecord::Base
has_many :video_votes, :as => :voteable
#code
end
class Video < ActiveRecord::Base
has_many :video_votes, :as => :voteable
#code
end
然后你可以像任何其他的has_many一样访问它们:
@video.video_votes
@comment.video_votes
#etc.