[解決済み] モデルから属性の変更を検出するには?
2023-03-17 20:53:08
質問
モデルが保存された後に実行されるコールバック関数をrailsで作成したいです。
Claimというモデルがあって、そのClaimの状態に応じて変化する'status'という属性を持っているのですが、考えられる値はpending, endorsed, approved, rejectedです。
データベースには、デフォルト値として'pending'を持つ'state'があります。
モデルが初めて作成された後や、ある状態から別の状態に更新された後に、どの状態から変化したかによって、特定のタスクを実行したいと思います。
私の考えは、モデル内に関数を用意することです。
after_save :check_state
def check_state
# if status changed from nil to pending (created)
do this
# if status changed from pending to approved
performthistask
end
質問ですが、モデル内で変更前の値を確認するにはどうすればいいのでしょうか?
どのように解決するのですか?
以下のサイトを参照してください。 ActiveModel::Dirty モジュールを見てください。 Claimモデルに対して以下のアクションを実行できるようになるはずです。
claim.status_changed? # returns true if 'status' attribute has changed
claim.status_was # returns the previous value of 'status' attribute
claim.status_change # => ['old value', 'new value'] returns the old and
# new value for 'status' attribute
claim.name = 'Bob'
claim.changed # => ["name"]
claim.changes # => {"name" => ["Bill", "Bob"]}
ああ、Railsの喜びよ!
関連
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] どなたか、collection_selectをわかりやすく説明していただけませんか?
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] Herokuの問題 : あなたが探しているページは存在しません。
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] Railsでグループとカウント
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?