【Rails】ログなどに使える操作履歴を取得する方法
ユーザーの情報を更新したときなど、どのユーザーのどの情報をどのように更新したのか取得したい時はありませんか?
今回はそんな時に使えるActiveRecord::AttributeMethods::Dirtyというクラスのメソッドを紹介します。結論からいうとレコードの更新前・更新後の状況を取得できます。
👇のURLを参考にしてください。
https://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Dirty.html
色々なメソッドがありますが、今回はsaved_changesというメソッドを使ってみます。
例えば、ユーザーを新たに作成したそのインスタンスに対して、saved_changesというメソッドを使うことで、その更新内容を取得することができます。
特にユーザーを更新したときなどは、どんなふうに内容を更新したのかほしいことがあります。そういった時はこちらのメソッドを使うと便利です。
ターミナル
$ user.saved_changes #新たにユーザーを作成したのち、そのユーザーの情報に対して、saved_changesメソッドを使用
=>
{"id"=>[nil, 15],
"name"=>[nil, "hogeパンまん"],
"created_at"=>
[nil, Sun, 19 Jun 2022 21:01:30.050473000 UTC +00:00],
"updated_at"=>
[nil, Sun, 19 Jun 2022 21:01:30.050473000 UTC +00:00]}