人生シーケンスブレイク

人生を楽してクリアしたい。

Rails5で、Railsコンソールでupdated_atを更新せずにカラムを更新する

環境

状況

  • インターネットで調べた User.record_timestamps = false などを行っても、updated_atが更新されてしまった。
  • mysqlのテーブル情報を確認したら、ON UPDATE CURRENT_TIMESTAMP が付いていた。
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

対応

updated_at カラムに直接元のupdated_atを指定するSQLを実行したらupdated_atを更新せずに更新できた。

User.connection.execute("UPDATE users SET published_at = created_at, updated_at = updated_at WHERE published_at IS NULL")

メタプログラミングRuby

メタプログラミングRuby