嗯,这似乎应该是一件简单的事情,但我似乎找不到我需要的东西。目前我有两个变量:频率和周期。频率设置为数字(例如1),句点设置为“月”或“年”。我想要做的是使用这些变量来计算从现在开始的x个月。
我已经看过1.month.from_now和1.year.from_now,但我需要的是:
eval("#{frequency}.#{period.downcase}.from_now")
但是我不确定使用eval
,因为我是Rails / Ruby的新手,而在PHP中,使用eval通常意味着你做错了。
Rails中有eval
邪恶吗?
答案 0 :(得分:3)
eval很慢。您可以使用Object#send:
irb(main):003:0> frequency = 1
irb(main):004:0> period = "month"
irb(main):005:0> frequency.send(period).from_now
=> Mon, 30 May 2011 16:57:12 UTC +00:00
您可以阅读速度here。
答案 1 :(得分:0)
您只需添加自己的方法,然后使用变量计算 x月
例如:
def my_x_month(period,frequency)
case period
when "month"
period.month.from_now
when "year"
period.year.from_now
end
end
答案 2 :(得分:0)
这真的只是一个红宝石问题,而不是Rails特有的。使用此:
frequency.send(period.downcase).from_now
只是在频率上调用一个名为“月”的方法。