Rails-如何在凭证栏上设置过期日期

时间:2018-09-23 08:39:22

标签: ruby-on-rails ruby-on-rails-5

我的凭证模型里面​​有过期日期。

以下是代码:

rails generate model Voucher

rails generate add_expired_date_to_vouchers expired_date:datetime
In voucher index:

<% if voucher.expired_date == Date.today %>
  <p>Your Voucher has Expired</p>
<% else %>
  <%= voucher.expired_date %>
<% end %>

问题是: 凭证的到期日是今天,它仍显示到期日期,而不是“您的凭证已到期”。.

请帮助我解决此问题。

谢谢

2 个答案:

答案 0 :(得分:0)

您正在将DateTime对象与Date比较不起作用。可能您应该 DateTime转换为Date

示例:

2.3.7 :006 > a = DateTime.now.to_date
 => Sun, 23 Sep 2018 
2.3.7 :007 > b = Date.today
 => Sun, 23 Sep 2018 
2.3.7 :008 > a == b
 => true 

因此下面的代码应该可以工作

<% if voucher.expired_date.to_date == Date.today %>
  <p>Your Voucher has Expired</p>
<% else %>
  <%= voucher.expired_date %>
<% end %>

您应该将DateTimeDateTime进行比较。

<% if voucher.expired_date == DateTime.now %>
  <p>Your Voucher has Expired</p>
<% else %>
  <%= voucher.expired_date %>
<% end %>

答案 1 :(得分:0)

您使用的条件运算符不正确!

<% if voucher.expired_date >= Date.today %> #if today is a valid day only use >
  <p>Your Voucher has Expired</p>
<% else %>
  <%= voucher.expired_date %>
<% end %>