Ruby on Rails 3.2.2を使用していますが、カウンターキャッシュ値を「カスタム」値に設定したいと思います。つまり、現時点では(移行ファイルで)次のコードを使用しようとしています。
def up
add_column :articles, :comments_count, :integer, :default => 0
Article.reset_column_information
Article.find_each do |article|
# Note: The following code doesn't work (when I migrate the database it
# raises the error "comments_count is marked as readonly").
Article.update_column(:comments_count, article.custom_comments.count)
end
end
言い換えると、:comments_count
値(カウンターキャッシュデータベーステーブルの列)をカスタム値に設定したいと思います(私の場合、値はarticle.custom_comments.count
-注:これcustom_comments
はActiveRecordアソシエーションではなく、Article
モデルクラスで指定されたメソッドです。アソシエーションに関連しない整数値も)。has_many
たぶん、私は次のようなものを使用することができます/すべきです
Article.reset_column_information
Article.find_each do |article|
Article.reset_counters(article.id, ...)
end
しかし、このreset_counters
方法はhas_many
関連付けなしでは機能しないようです。
:comments_count
「カスタムアソシエーション」に関連する特定の値にカウンターキャッシュ値を設定するにはどうすればよいですか?