updated_atだけ更新
find_or_create_byを使う際、すでにレコードがあるときはupdated_atだけ更新して欲しいと思う状況がありました。
User.find_or_create_by(name: “Hayashi”)
これだと既にHayashiさんが存在する場合、updated_atは更新されません。
なので以下のようにfind_or_initiaize_byしてからアップデートしようかと考えておりました。
user = find_or_initiaize_by(name: “Hayashi”)
user.update(name: “Hayashi”, updated_at: Date Time.now)
しかし、touchメソッドを使えばupdated_atのみ更新できると知りました!
User.find_or_create_by(name: “Hayashi”).touch
注
User.find_or_create_by(name: “Hayashi”)だと返り値は保存したオブジェクトですが、
User.find_or_create_by(name: “Hayashi”).touchとすると返り値がbooleanになるので注意する必要がありました!