Rails多态关联,一个类中有两个assoc类型

时间:2009-12-29 19:45:14

标签: ruby-on-rails polymorphic-associations model-associations

考虑一个班级:

class Link < ActiveRecord::Base

  has_many :link_votes, :as => :vote_subject, :class_name => 'Vote'
  has_many :spam_votes, :as => :vote_subject, :class_name => 'Vote'

end

问题是,当我使用@link.link_votes << Vote.new添加新投票时,vote_subject_type'Link',而我希望它可能是'link_votes'或类似内容。这是AR限制还是有办法解决这个问题?

我实际上找到了一个相关的答案,但我不太确定它的内容:Polymorphic Association with multiple associations on the same model

1 个答案:

答案 0 :(得分:0)

听起来你想使用单表继承 - 这将允许你有两种不同类型的投票。这将在投票表中添加一个“类型”列,然后您将作为LinkVote或SpamVote访问

class SpamVote << Vote
  ...
end

沿着这些路线。

class Link < ActiveRecord::Base

  has_many :link_votes, :as => :vote_subject
  has_many :spam_votes, :as => :vote_subject

end

在投票表中,您会看到如下列:

id, type, vote_subject_type, vote_subject_id, etc.

对STI进行更多研究,我打赌你会找到答案。