2

我有以下模型:

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 吗?还是有完全不同的方法?

4

0 回答 0