【发布时间】:2012-03-21 17:11:20
【问题描述】:
所以我有一个包含 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
所以这一切都很好,但是我需要为评论和回复添加一个计数器缓存,以便获得每个对象的同意和不同意的大小。在所有文档中,它都有使用正常多态关联进行计数器缓存的示例,而不是其中包含额外条件的示例。作为参考,Emotion 的模式如下所示:
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 - 我需要能够通过计数器缓存在多态关联上调用@commet.agrees_count、@comment.disagrees_count、@reply.agrees_count 和@reply.disagrees_count。所以评论和回复需要 2 个计数器缓存。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 polymorphic-associations