如何在 Rails 中向 Time.now 添加可变时间(eval?)
嗯,这看起来应该是一件简单的事情,但我似乎找不到我需要的东西。目前我有两个变量:频率和周期。频率设置为数字(例如1),周期设置为“月”或“年”。我想要做的是使用这些变量来计算从现在开始的 x 个月。
我看过 1.month.from_now 和 1.year.from_now 但我需要的是这样的:
eval("#{frequency}.#{period.downcase}.from_now")
但我不确定 eval
的使用,因为我是 Rails/ 新手Ruby 和 PHP 中使用 eval 通常意味着您做错了什么。
Rails 中的 eval
是邪恶的吗?
Well this seems like it should be a simple thing but I can't seem to find what I need. Currently I have two variables: frequency and period. frequency is set to a number (eg 1) and period is set to "month" or "year". What I want to do is is use these variables to calculate x months from now.
I've seen the 1.month.from_now and 1.year.from_now but what I need is something like:
eval("#{frequency}.#{period.downcase}.from_now")
but I'm not sure about the use of eval
as I'm new to Rails/Ruby and in PHP the use of eval usually means you're doing something wrong.
Is eval
evil in Rails?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
eval 相当慢。您可以使用 Object#send:
您可以阅读有关速度此处。
eval is pretty slow. You can use Object#send:
And you can read about the speed here.
您只需添加自己的方法并使用变量来计算您的x 月份
例如:
You can simply add your own method and use your variables to calculate your x month from
for example:
这实际上只是一个 ruby 问题,而不是 Rails 特有的问题。使用这个:
简单地调用一个名为“年”的“月”的方法。
It's really just a ruby question, not Rails specific. Use this:
that simply invokes a method called "month" of "year" on frequency.