📚
Rails で対象のオブジェクトが『新規で保存された直後のレコードかどうか』を判定する
対象のレコードがまだ新規で保存前かどうかは #new_record? でチェックできます。
まだ保存前であれば true を返し、保存直後は false を返します。
user = User.new(name: "homu")
# 新規で保存前は true を返す
pp user.new_record?
# => true
# 保存後は false を返す
このときに『新規のレコードの保存直後かどうか』を判定したい場合には #previously_new_record? が利用できます。
動きとしては以下のような感じ
# 保存前は false を返す
user = User.new(name: "homu")
pp user.previously_new_record? # => false
# 保存直後であれば true を返す
user.save!
pp user.previously_new_record? # => true
user.assign_attributes(name: "homu")
pp user.previously_new_record? # => true
# 何かしら更新して保存した場合は false になる
user.save!
pp user.previously_new_record? # => false
この判定処理がほしかったので既存のメソッドで判定できてよき。
Discussion