0

クラスを考えてみましょう:

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_typeisを使用して新しい投票を追加するとき、またはそのようなもの'Link'になりたいと思って'link_votes'いることです。これは AR の制限ですか、それとも回避する方法はありますか?

私は実際に1つの関連する答えを見つけましたが、それが何を言っているのかよくわかりません:同じモデルで複数の関連付けを持つポリモーフィックな関連付け

4

1 に答える 1

0

単一テーブルの継承を使用したいようです-これにより、2つの異なるタイプの投票が可能になります。これにより、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 についてさらに調査すれば、答えが見つかると思います。

于 2009-12-29T23:18:53.107 に答える