好存放的時間長度動態,所以我需要的東西是這樣的:數據庫在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