我正在尝试将json对象发布到rails app。
这个对象的一个领域是一个非常多的时间戳。它已保存在“时间戳”中。模特中的成员。
Rails处理很多由字符串表示的日期时间格式(例如我可以发送" 2015年12月24日下午9:46:24 PST"它会起作用)。
但是,如果我尝试发送一个整数(unix time)时间戳,rails会拒绝一个对象。
这是标准行为(或者我遗漏了什么)
答案 0 :(得分:1)
我们可以通过在模型中定义类似代理属性来轻松完成此操作
attr_accessible :integer_timestamp
def integer_timestamp
timestamp.to_time.to_i
end
def integer_timestamp=(value)
self.timestamp = value.blank? ? nil : Time.at(value.to_i)
end
答案 1 :(得分:0)
您需要明确转换您的纪元时间。
可以是:
class MyModel < ActiveRecord::Base
def my_attr_name=(timestamp)
dt = begin
timestamp.to_datetime
rescue ArgumentError
DateTime.strptime(timestamp,'%s')
end
write_attribute :my_attr_name, dt
end
end