考虑一个班级:
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
答案 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进行更多研究,我打赌你会找到答案。