带有has_many的counter_cache

时间:2012-07-04 21:58:18

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-3.1

我已经读过这个不可能,然后有人告诉我它是。他们给了我这个代码,但后来不得不去了,现在我的应用程序被破坏,直到我开始工作:/

我有一个Tag模型,每个标签都有__资源:through =>资源标签。每个资源也有很多标签。

我需要知道每个标签的资源数量(我不关心其他方式)。

问题是它说未知密钥cache_counter

这是我的模特

Tag.rb

  has_many :resource_tags, :dependent => :destroy, :counter_cache => :resource_count
  has_many :resources, :through => :resource_tags

Resource.rb

  has_many :resource_tags, :dependent => :destroy
  has_many :tags, :through => :resource_tags

我的迁移:

class CreateTags < ActiveRecord::Migration
  def change
    create_table :tags do |t|

      t.string  :name
      t.integer :resource_count, :default => 0

      t.timestamps
    end
  end
end

1 个答案:

答案 0 :(得分:2)

:counter_cache选项适用于belongs_to方法

resorce_tag模型中的

belongs_to :tag, :counter_cache => :resource_count

我认为最好将列resources_count(复数)命名为