Active Recordで日付カラムの別名を設定


Ruby on Railsのモデル(Active Record)でデフォルトの日付カラムではなく、別名の日付カラムを設定したい場合の記述方法です。別のフレームワークからRailsに移植するときによく使います。

🐯 特定のモデルだけ別名を指定したい

特定のモデルだけcreated_atupdated_atを変更したい場合はこちら。

class Person < ActiveRecord::Base
private
def timestamp_attributes_for_update
super + [:updated_date]
end
def timestamp_attributes_for_create
super + [:created_date]
end
end

🚌 すべてのモデルに対して適用

すべてのモデルでcreated_atupdated_atを変更したい場合はこちら。

module ActiveRecord
module Timestamp
def timestamp_attributes_for_update
[:updated_at, :updated_date]
end
def timestamp_attributes_for_create
[:created_at, :created_date]
end
end
end

👽 補足:DateTimeオブジェクトのタイムゾーンの変更

DateTimeオブジェクトのタイムゾーンを一時的に変更したい(統一させたい)場合に使えるメソッドin_time_zoneの紹介です。

Time.current.utc
#=> 2017-08-13 06:49:23 UTC
# UTC => JSTへの変更
Time.current.utc.in_time_zone('Tokyo')
#=> Sun, 13 Aug 2017 15:50:54 JST +09:00

🗽 参考リンク

📚 おすすめの書籍