質問

Iは、テストおよびテストに使用されるオブジェクトグラフのホーンズビーシナリオのRSpecのを使用しています。

0値の代わりに、初期化されていないそれらを残す(ゼロ)にカウンターキャッシュカラムを初期化することをお勧めしますか?または私は、これらのカウンタキャッシュ列を作成し、移行中にデフォルト値を定義する必要がありますか?

役に立ちましたか?

解決

はい、あなたはデフォルト値を設定する必要があります。そうでなければ、NULLを処理するために、特殊なケースの数学演算を持っています。

あなたがポストオブジェクトの配列を持っていたあなたはコメントの数を合計取得したいとしましょう。

あなたがいない場合、それは、それがnilで失敗しない可能性がありますされますので、ゼロ@posts.sum(&:comment_count)に初期化する場合。

私はこのようなあなたの列を定義するお勧めします:

add_column :posts, :comments_count, :integer, :default => 0, :null => false

他のヒント

Railsは単に以下のSQLを送信

UPDATE posts SET comment_count = comment_count + 1, WHERE id IN (10, 15)

だから、どちらかのDBは、未定義の1 == 1またはRailsは、独自のいくつかの初期化を行うことを知っています。 いずれの場合も、これは私には安定した動作のように思えるので、それらをゼロに設定し、作業を保存しないでください。あなたは、とにかく初期化をしたかどうかを確認することができなくなりますので、あなたがそれをテストする方法(それはせずに、単に同じ動作をします)。そして、あなたが本当に将来の校正の面で得たものを、あなたによって初期化されることが保証されていない場合ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top