3

1つの列をリセットするために月に1回実行されるrakeタスクを実装しようとしています。列をデフォルト値にリセットしたいのですが、これを実現するのに役立つ方法が見つかりません。reset_column_informationが機能しない

アクティブレコードの単一の列をリセットする最も効率的な方法は何ですか?

4

2 に答える 2

7

基本メソッド #update_all はデータベース内で直接更新を行うため、非常に効率的です。ただし、モデルがロードされていないため、コールバックをバイパスします: http://apidock.com/rails/ActiveRecord/Base/update_all/class

SomeModel.update_all("some_column = 4");  # sets all some_column attributes to 4

デフォルトにリセットする方法は、最初にデフォルトをどのように設定しているかによって異なります。デフォルトがモデルで計算される場合、すべてのレコードを選択してインスタンス化する必要があり、非常に遅くなる可能性があります。データベースで定義されている場合は可能かもしれませんが、データベース固有のものになると思います。

于 2012-06-25T23:25:31.490 に答える
0

筋金入りの場合は、移行で列を削除してから再作成することもできます。時々、これはずっと速くなります。重要なアプリケーションで自動的に行うことはありませんが、ローカル マシンをいじっていて、すばやくテストしたい場合は、これが効果的です。

于 2016-03-18T23:31:44.007 に答える