def up:deafault => 0を設定した場合、値を設定するtopic.comments.lengthがsizeだと、すべての値が0になってしまうので注意。
add_column :topics, :comments_count, :integer, :default => 0
add_column :topics, :likes_count, :integer, :default => 0
Topic.reset_column_information
Topic.all.each do |topic|
Topic.update_counters topic.id,
:comments_count => topic.comments.length,
:likes_count => topic.likes.length
end
end
def down
remove_column :topics, :denotations_count
remove_column :topics, :subcatrels_count
end
counter_cache用カラムの追加と既存のリレーションの数を設定するmigration
〜_counterのようなcaounter_cache用のカラムを追加する際に、既存のリレーション数を値として設定するマイグレーションの方法。
この記事へのコメント
コメントを書く
この記事へのトラックバック