counter_cache用カラムの追加と既存のリレーションの数を設定するmigration

〜_counterのようなcaounter_cache用のカラムを追加する際に、既存のリレーション数を値として設定するマイグレーションの方法。
def up
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
:deafault => 0を設定した場合、値を設定するtopic.comments.lengthsizeだと、すべての値が0になってしまうので注意。
posted by digital-squad at 2013年08月05日 16時56分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック