使用before_create Rails 4设置到期日期和时间

时间:2014-12-12 11:59:03

标签: ruby-on-rails datetime

我正在为广告添加过期功能。过期应该包含数据和时间像这样: 12.06.12 14:24

此时我这样做了: 我在数据库中添加了名为到期

的广告的附加列
before_create :set_expiration_date

   def set_expiration_date
        self.expiration =  Date.today + 56.days
    end

这很有效。现在我想看到这个到期日期。

广告#展示

<%= @advertisement.expiration.to_formatted_s(:db) %>

但它只给了我2015-02-06

当我将 set_expiration_date 更改为:

 def set_expiration_date
      self.expiration =  Time.now + 56.days
 end

仍然像2015-02-06没有时间。

所以我想知道只有zlution会在我的广告表中有两列 expiration_date expiration_time

然后在我的模型中有这样的事情:

 before_create :set_expiration_date
 before_create :set_expiration_time


 def set_expiration_date
      self.expiration_date =  Date.today + 56.days
 end

 def set_expiration_time
      self.expiration_time =  Time.now
 end

我认为这个解决方案非常难看。

我的问题还有其他更简单的解决方案吗?如何存储单列日期和时间?

提前致谢!

2 个答案:

答案 0 :(得分:2)

Changeexpirationdate的{​​{1}}数据类型。

答案 1 :(得分:1)

expirationdate更改为datetime,为什么不使用strftime来格式化输出

示例:

<%= @advertisement.expiration.strftime("%b %d %Y, %H:%M") %>

另见strftime format meaning