我如何添加可变时间到时间.现在在Rails中(eval?)



嗯,这似乎应该是一个简单的事情,但我似乎找不到我需要什么。目前我有两个变量:频率和周期。频率设置为一个数字(例如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"的频率

相关内容

  • 没有找到相关文章

最新更新