嗯,这似乎应该是一个简单的事情,但我似乎找不到我需要什么。目前我有两个变量:频率和周期。频率设置为一个数字(例如1),周期设置为"月"或"年"。我想做的是使用这些变量来计算从现在起的x个月。
我已经看到了1.month.from_now和1.year.from_now,但我需要的是类似的东西:
eval("#{frequency}.#{period.downcase}.from_now")
但我不确定eval
的使用,因为我是Rails/Ruby的新手,在PHP中使用eval通常意味着你做错了什么。
eval
是邪恶的Rails?
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
你可以在这里阅读速度
您可以简单地添加您自己的方法并使用您的变量从计算您的x月份例如:
def my_x_month(period,frequency)
case period
when "month"
period.month.from_now
when "year"
period.year.from_now
end
end
这只是一个ruby问题,与Rails无关。使用:
frequency.send(period.downcase).from_now
简单地调用一个方法,叫做"month"of"year"的频率