私は2種類のモデル、コメントと返信を持つアプリを持っています。それぞれ、あなたは「同意」または「同意できない」のいずれかを選択できるので、Emotionという多形モデルがあります。ここではこれらのための私のコードは次のとおりです。多態性の関係とカウンタキャッシュ
class Comment < ActiveRecord::Base
belongs_to :user
has_many :replies
has_many :emotions, :as => :emotionable
end
class Reply < ActiveRecord::Base
belongs_to :user
belongs_to :comment
has_many :emotions, :as => :emotionable
end
class Emotion < ActiveRecord::Base
belongs_to :emotionable, :polymorphic => :true
end
だから、これはすべてが正常に動作しますが、私はそれぞれの同意や不同意のサイズを取得するために、コメントや返信の両方のためのカウンターキャッシュを追加する必要がありますするつもりですオブジェクト。すべてのドキュメントでは、通常の多態的な関連付けを持つカウンタキャッシュを実行するための例がありますが、それには余分な条件がありません。参考までに、感情のスキーマで次のようになります。
create_table "emotions", :force => true do |t|
t.integer "user_id"
t.string "emotion"
t.integer "emotionable_id"
t.string "emotionable_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
TL:DR - 私は上のreply.agrees_countとする@ reply.disagrees_count @、comment.disagrees_count @、commet.agrees_count @呼び出すことができるようにする必要がありますカウンタキャッシュを介した多相関連。したがって、コメントと返信には2つのカウンタキャッシュが必要です。
まだそれは私のために働かなかった – kamal