2010-11-29 5 views
11

J'essaie d'ajouter une commande counter_cache et cette migration de Rails 3 me donne une erreur que je n'arrive pas à résoudre.Erreur en lecture seule lors de l'exécution d'une migration de Rails 3 avec update_attribute

La migration est

 
class AddItemsCountToStore < ActiveRecord::Migration 
    def self.up 
     add_column :stores, :items_count, :integer, :default => 0 

     Store.reset_column_information 

     Store.all.each do |store| 
      store.update_attribute :items_count, store.items.count 
     end 
    end 

    def self.down 
     remove_column :stores, :items_count 
    end 
end 

et l'erreur est:

== AddItemsCountToStore: migrante ====================== ===================== - add_column (: stocke,: items_count,: integer, {: default => 0}) -> 0.0680s rake annulé! Une erreur est survenue, et ce toutes les migrations annulé par la suite:

items_count est marqué en lecture seule C: /Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.0/lib/active_record/ persistence.rb: 115: dans `update_attribute '

Des idées?

+0

duplication possible de [Problème avec l'implémentation counter \ _cache] (http://stackoverflow.com/questions/4295404/problem-with-counter-cache-implementation) – mbillard

Répondre