Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert string to a function in ruby-on-rails

I need a method that through an input string to do a calculation, like this

function = "(a/b)*100"
a = 25
b = 50
function.something
>> 50

have some method for it?

like image 650
gFontaniva Avatar asked Jul 10 '14 19:07

gFontaniva


1 Answers

You can use instance_eval:

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

instance_eval function
# => 50.0

Be aware though that using eval is inherently insecure, especially if you use external input, as it may contain injected malicious code.

Also note that a is set to 25.0 instead of 25, since if it is an integer a/b would result in 0 (integer).

like image 116
Uri Agassi Avatar answered Oct 01 '22 08:10

Uri Agassi