如何将Rails时间自动转换为Unix纪元时间?

时间:2013-07-12 20:15:57

标签: ruby-on-rails ruby ruby-on-rails-3 unix-timestamp

我有一个Rails应用程序,它大量使用created_atupdated_at字段。

我发现像Post.last.created_at.to_f这样的东西会给我一个纪元时间,但我总是需要纪元时间,所以我想知道是否有办法编写一个自动查询后过滤器,每次都会进行转换我致电created_atupdate_at。现在,每当我读到created_at / updated_at时,我都会重复自己,这是一种糟糕的形式,并且当我忘记进行转换时已经造成了错误。

我正在使用Rails 3.2.13和Ruby 1.9.3p392。

另外,我不能只在我的视图中编写post.created_at.to_f,因为我正在使用渲染JSON作为输出。

2 个答案:

答案 0 :(得分:3)

为什么不制作一个可以修补ActiveRecord::Base的方法?

def created_epoch
  self.created_at.to_f
end

然后你不必记得转换,你只需要使用那种方法。

答案 1 :(得分:2)

我个人认为@tadman提出的方法更好。

created_at方法可以如下所示做你想做的事:

      def created_at
        created_at= attributes["created_at"]
        created_at ? created_at.to_f : nil
      end

将其放在模型中或将其附加到ActiveRecord :: Base。在投入生产之前仔细测试。