1

我已經讀過這個不可能的,然後有人告訴我這是可能的。他們給了我這個代碼,但後來不得不去,現在我的應用程序被打破,直到我得到這個工作:/counter_cache with has_many

我有一個標記模型,並且每個標記has_many資源:through =>資源標記。每個資源也有has_many標籤。

我需要知道每個標籤的資源數量(我不在意其他方式)。

的問題是它說未知的關鍵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 

回答

2

:counter_cache選項是belongs_to方法

在resorce_tag模型

belongs_to :tag, :counter_cache => :resource_count 

,我認爲這是最好的名字列resources_count(複數)

+0

所以我把它移動到上resource_tag模型:資源或:標籤?你能完成你的代碼嗎?我嘗試閱讀所有關於這個,但theres只有像1行 – Tallboy

+0

所以現在我有在tag.rb:'has_many:resource_tags,:dependent =>:destroy',在resource_tag.rb我有'belongs_to:標籤,:counter_cache =>:resources_count'和resource.rb我有'has_many:resource_tags,:dependent =>:destroy'。是對的嗎?我也有't.integer:resources_count,:default => 0'在我的遷移 – Tallboy

+0

我想是這樣).... –