好存放的时间长度动态,所以我需要的东西是这样的:数据库在Ruby on Rails的
time_span = "1.month"
date = DateTime.now
date = date + send("#{time_span}")
其中time_span实际上是存储在数据库中,但是这似乎并没有工作.. 下面是一些控制台操作:
$ rails c
>> time_span = 1.month
=> 1 month
>> date = DateTime.now + time_span
=> Fri, 27 Aug 2010 20:51:18 -0500
>> time_span.class
=> Fixnum
>> time_span = '1.month'
=> "1.month"
>> date = DateTime.now + time_span
TypeError: expected numeric
ruby/1.8/date.rb:1236:in `plus_without_duration'
date/calculations.rb:87:in `+'
from (irb):5
的想法是,我需要1.month存储在数据库中的字符串,因为存储1.month作为一个Fixnum只存储在特定月份的总秒数,但我希望它在当前月份更具活力。我知道send
在这种情况下没有被使用,因为它的文档建议,但我已经看到它以这种方式使用。
有什么不好的eval? – 2010-07-28 02:02:35
'eval'通常是因为它可能是一个漏洞而不受欢迎 - 如果你不严格控制正在评估的内容,你可以为攻击者提供一个很好的方法来打入你的系统(因为eval会评估它给出的任何字符串在您的应用程序的上下文中) – 2010-07-28 03:45:03