本文介绍了使用before_create Rails 4设置到期日期和时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am adding expire function to advertisement. Expire should contain data and time Like this: 12.06.12 14:24

在这一点上,我这样做是这样的:
我在数据库中还有一个用于广告的附加列,称为过期

At this point I done like this:I have additional column in database for advertisements called expiration

before_create :set_expiration_date

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

这很好。现在,我想看到这个过期日期。

This works great. Now in view I want to see this expiration date.

Advertisement#show

<%= @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

所以我想知道是否唯一的解决方法是在广告表中有两列 expiration_date expiration_time

So I wonder if only soulution would be having two columns expiration_date and expiration_time to my advertisement table.

模型:

 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

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

I think this solution is very ugly.

任何其他模拟码头解决我的问题?如何在单列中存储日期和时间?

Is there any other simpier solution to my problem ? How can I store in single column date and time?

谢谢!

推荐答案

更改日期到 datetime 的过期,为什么不使用 strftime 来格式化输出格式

Change expiration from date to datetime, and why do you don't use strftime to beter format your output

示例:

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

另请参见

这篇关于使用before_create Rails 4设置到期日期和时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 22:23