私は「レーキが中止されました! ... posts_countには読み取り専用のエラーがあります。counter_cache実装の問題
私は2つのモデルを持っています:ユーザーと投稿。
users has_many posts.
posts belongs_to :user, :counter_cache => true
posts_count列をusers表に追加し、ユーザーごとの現在のポスト数を計算して記録する移行があります。
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宣言を削除すると、
belongs_to :user
移行が正常に実行されます。これは明らかに、あなたが実際にこのように実装することができなかったので意味がありません。私は何が欠けていますか?
"User.reset_counters u.id、:posts_count"というアプローチが好ましいと思われます。 http://api.rubyonrails.org/classes/ActiveRecord/CounterCache.html –
上記を軽く訂正してください(そのコメントはもう編集できません): "User.reset_counters u。id:、posts " –
@Mike Fischer良いキャッチは、' reset_counters'がSQL呼び出しを使用していないようです。 –