将字符串转换为ruby-on-rails中的函数

gFo*_*iva 5 ruby ruby-on-rails ruby-on-rails-3

我需要一个通过输入字符串进行计算的方法,就像这样

function = "(a/b)*100"
a = 25
b = 50
function.something
>> 50
Run Code Online (Sandbox Code Playgroud)

有一些方法吗?

Uri*_*ssi 7

你可以使用instance_eval:

function = "(a/b)*100"
a = 25.0
b = 50

instance_eval function
# => 50.0
Run Code Online (Sandbox Code Playgroud)

请注意,使用eval本质上是不安全的,特别是如果您使用外部输入,因为它可能包含注入的恶意代码.

另请注意,a设置为25.0而不是25,因为如果它是一个整数a/b将导致0(整数).

  • 请注意,这可以在您的应用程序中运行任何内容,例如:User.destroy_all. (5认同)