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

🐰 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)