Aar*_*oir 8 ember.js ember-data active-model-serializers
我正在使用active_model_serializers和ember.js.我的一个模型有一个日期属性.在rails中,日期属性以"YYYY-MM-DD"的格式序列化.
问题; 当ember-data使用javascript Date构造函数对日期进行反序列化时,它会假定"不正确"的时区.
*不正确不是最好的词,但它是不正确的,因为我希望它默认为当前时区.DS.Model日期属性错误地解析日期(YYYY-MM-DD)
我认为active_model_serializer应该采用date属性并将其转换为iso8601格式.
Object.date.to_time_in_current_zone.iso8601
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉active_model_serializers如何序列化所有日期对象?或者我应该在javascript中修复时区问题?
这是我目前的解决方案,但我真的觉得应该可以定义日期对象如何全局序列化.
class InvoiceSerializer < ActiveModel::Serializer
attributes :id, :customer_id, :balance
def attributes
hash = super
hash['date'] = object.date.to_time_in_current_zone.iso8601 if object.date
hash
end
end
Run Code Online (Sandbox Code Playgroud)
UPDATE
我现在的首选解决方案是修补该ActiveSupport::TimeWithZone.as_json方法.
#config/initializers/time.rb
module ActiveSupport
class TimeWithZone
def as_json(options = nil)
time.iso8601
end
end
end
class InvoiceSerializer < ActiveModel::Serializer
attributes :id, :customer_id, :balance, :date
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2127 次 |
| 最近记录: |