やりたいこと
userテーブルのemailが変更されるかどうかを判定したい、みたいなこと、あると思います。
実装!
これでもいけますが、、
!new_record? && email == email_in_database
この方がスマートですよね、と。
will_save_change_to_attribute?(:email)
何が嬉しいかというと、コードがシンプルになったのと、&&
が無くなったのでRubocop様も喜んでくれました(Metrics/PerceivedComplexity)。
参考
new_record
https://railsdoc.com/page/model_new_record_q
attribute_in_database(attr_name)
https://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Dirty.html#method-i-attribute_in_database
will_save_change_to_attribute?(attr_name, **options)
https://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Dirty.html#method-i-will_save_change_to_attribute-3F
Class: RuboCop::Cop::Metrics::PerceivedComplexity
https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Metrics/PerceivedComplexity