0

考慮一類:Rails的多態關聯,二assoc命令類型的一類

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

聽起來像是你想使用單表繼承 - 這將讓你有兩種不同類型的票。這將在「類型」列添加到票表,你會那麼作爲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和我敢打賭,你會找到答案。