我有以下模型:
class EntityTag < ActiveRecord::Base
attr_protected :user_id, :post_id, :entity_id
belongs_to :user
belongs_to :post
belongs_to :entity
validates :user_id, :presence => true
validates :entity_id, :presence => true
validates :post_id, :presence => true
validates_uniqueness_of :user_id, :scope => [:entity_id, :post_id]
end
它在 Post 模型中的利用如下:
class Post < ActiveRecord::Base
...
has_many :entity_tags, :dependent => :destroy
has_many :tags, :through => :entity_tags, :uniq => true,
:source => :entity
has_many :taggers, :through => :entity_tags, :uniq => true,
:source => :user
...
end
我想记录两件事:1)特定 post_id 的 entity_tags 的数量。这可以通过 EntityTag 模型中 :post 上的 :counter_cache 来完成。2) 我还想根据特定 post_id 的唯一 :entity_id 值跟踪 UNIQUE EntityTag 的数量。我该如何实现这一目标?我可以使用带有某种约束的 :counter_cache 吗?还是有完全不同的方法?