将字符串转换为 ActiveSupport::Duration

Gur*_*uru 7 ruby ruby-on-rails

如何将字符串转换为 ActiveSupport::Duration?

在 Rails 控制台中,此代码有效

Date.today + 1.month (or 22.days)
Run Code Online (Sandbox Code Playgroud)

但这不起作用

Date.today + '1.month' 
Run Code Online (Sandbox Code Playgroud)

它说类型错误:预期数字

“1.month”来自数据库记录。

Gur*_*uru -3

Ohhooo 我自己得到了答案 需要像这样添加 eval

Date.today + eval('1.month')
Run Code Online (Sandbox Code Playgroud)

工作得很好

还有别的办法吗?使用这种方式有什么优点和缺点?

这可能会导致远程代码执行漏洞,例如随机的人在您的服务器上为所欲为