入力変換についてのコメントも見てから、他の形式で使用していない場合は、これらのフィールドのゲッターとセッターメソッドをオーバーライドできると思います。多分これらの行に沿った何かが助けになるでしょう。
これは、フィールドのシリアル化だけでなく、それらのフィールドの正常な動作を維持したい場合は、Tadmanの助言を受けてください。
# with_unix_time.rb
module WithUnixTime
# These methods lack error handling
def to_unix_time(*fields)
fields.each do |field|
# Override getter.
define_method field do
self[field].to_i
end
# Override setter
define_method "#{field}=" do |value|
self[field] = Time.at(value)
end
# Convenience method to retrieve the original DateTime type
define_method "raw_#{field}" do
self[field]
end
end
end
end
# chimichanga.rb
class Chimichanga < ActiveRecord::Base
extend WithUnixTime
to_unix_time :time_to_kill, :time_for_joke
end
これは、すべての 'updated_at'フィールドまたはそうでなければ無関係なフィールドの束ですか? – tadman
日付が入っているすべてのフィールド。現在、私はいくつかの異なるモデルで5を持っています。 ボーナスとして、同じことを逆に入力します。現在、私は手動でそれぞれのものを変換しています。 – TiggerToo
ActiveModel :: Serializerをサブクラス化し、 ':as_integer'などのオプションを取る独自の' attributes'メソッドを導入することができます。 – tadman