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になるので注意する必要がありました!