在Rails中接受时间戳作为整数

时间:2016-01-12 05:40:54

标签: ruby-on-rails datetime

我正在尝试将json对象发布到rails app。

这个对象的一个​​领域是一个非常多的时间戳。它已保存在“时间戳”中。模特中的成员。

Rails处理很多由字符串表示的日期时间格式(例如我可以发送" 2015年12月24日下午9:46:24 PST"它会起作用)。

但是,如果我尝试发送一个整数(unix time)时间戳,rails会拒绝一个对象。

这是标准行为(或者我遗漏了什么)

2 个答案:

答案 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