[解決済み] ActiveRecordのコールバックを実行しないようにするにはどうすればよいですか?
2022-04-27 03:32:16
質問
after_saveコールバックを持ついくつかのモデルを持っています。通常はそれでいいのですが、開発用データを作成するときなど、コールバックを実行させずにモデルを保存したい場合があります。そのための簡単な方法はありますか?例えば...
Person#save( :run_callbacks => false )
または
Person#save_without_callbacks
Railsのドキュメントを見ましたが、何も見つかりませんでした。しかし、私の経験では、Railsのドキュメントが必ずしもすべてを語っているとは限りません。
アップデイト
見つけた ブログ記事 には、このようなモデルからコールバックを削除する方法について説明されています。
Foo.after_save.clear
その方法がどこで文書化されているのか見つけられませんでしたが、うまくいくようです。
どのように解決するのですか?
この解決策はRails 2のみです。
今調べたところ、解決策がありそうです。ActiveRecordのプライベートメソッドが2つあります。
update_without_callbacks
create_without_callbacks
これらのメソッドを呼び出すには、sendを使用する必要があります。
p = Person.new(:name => 'foo')
p.send(:create_without_callbacks)
p = Person.find(1)
p.send(:update_without_callbacks)
この機能は、コンソールやランダムなテストを行う際にのみ使用するものであることは間違いありません。お役に立てれば幸いです。
関連
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み] Rubyのクラス名を取得する方法を教えてください。
-
[解決済み] ActiveRecordオブジェクトを削除するにはどうしたらいいですか?
-
[解決済み】activerecordのレコードを複製する最も簡単な方法は何ですか?
-
[解決済み】RailsでActiveRecordモデルとそのテーブルの名前を変更するマイグレーションはどのように記述するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】取得中。「プロジェクトのクローンとマイグレート後に、「マイグレーションは保留中です。この問題を解決するには 'bin/rake db:migrate RAILS_ENV=development' を実行してください。
-
[解決済み] gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] Railsでグループとカウント