[解決済み] after_saveでレコードが作成されたばかりか、更新されたかを判断する方法
2022-11-17 20:55:16
質問
レコードが保存されたかどうかは、#new_record?関数で判定されます。しかし、それは常にfalseであり
after_save
フックを使用しています。新しく作成されたレコードなのか、更新による古いレコードなのかを判断する方法はないのでしょうか?
のような別のコールバックを使用しないことを希望しています。
before_create
のような別のコールバックを使用して、モデルにフラグを設定したり、データベースに別のクエリを要求したりしないことを望んでいます。
どんなアドバイスでも結構です。
編集:でそれを決定する必要があります。
after_save
フックで決定する必要がありますが、私の特定のユースケースには
updated_at
または
updated_on
タイムスタンプ
どのように解決するのですか?
私はこれを
after_save
のコールバックに使おうと思っていました。
よりシンプルな解決策としては
id_changed?
(で変更されないので)。
update
で変更されないため)、あるいは
created_at_changed?
というように、タイムスタンプのカラムが存在する場合は
更新: @mitsy が指摘しているように、このチェックがコールバックの外で必要な場合は
id_previously_changed?
. 参照
ドキュメント
.
関連
-
[解決済み] 該当するルートがない [GET] "demo/hello"
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] レイル 4 radio_button_tag default not selected
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController
-
[解決済み] Railsのafter_saveコールバックでどの属性が変更されたかを判定しますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み】取得中。「プロジェクトのクローンとマイグレート後に、「マイグレーションは保留中です。この問題を解決するには 'bin/rake db:migrate RAILS_ENV=development' を実行してください。
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?