Rails:使用存储在数据库中的时间标识符计算时间" string"

时间:2016-04-28 02:49:12

标签: ruby-on-rails ruby ruby-on-rails-4

我想计算这样的未来日期:

Date.today + 1.year
Date.today + 1.month

要确定将来日期需要为month还是year,我会从数据库中请求durationduration值保存为字符串。

end_date = Date.today + 1.Duration.find(order.duration_id).duration

我相信上面的代码执行如下:

Date.today + 1."year" #the quotes cause an error

如何删除引号?

1 个答案:

答案 0 :(得分:2)

在rails 1.year的工作方式中,:year1上的实例方法。在ruby中,要评估对象的任意方法,只需使用send('method_name')send(:method_name)

如果您将持续时间作为字符串,则可以使用:send来评估实际持续时间:

duration = "year"
1.send(duration) == 1.year