Грабли прерваны! ... posts_count помечается как ошибки только для чтения.
У меня есть две модели: пользователь и пост.
users has_many posts.
posts belongs_to :user, :counter_cache => true
У меня есть миграция, которая добавляет столбец posts_count в таблицу пользователей, а затем вычисляет и записывает текущее количество сообщений на пользователя.
self.up
add_column :users, :posts_count, :integer, :default => 0
User.reset_column_information
User.all.each do |u|
u.update_attribute( :posts_count, u.posts.count)
end
end
когда я запускаю миграцию, я получаю сообщение об ошибке. Конечно, это довольно четко, и если я удалю объявление: counter_cache из модели posts, например,
belongs_to :user
миграция проходит нормально. Это, очевидно, не имеет смысла, потому что вы не могли бы реализовать это таким образом. Чего мне не хватает?