Ruby字符串到方法名称错误:未定义的方法`call=';对于#<;方法:0xa396aac>;(命名者)

Ruby字符串到方法名称错误:未定义的方法`call=';对于#<;方法:0xa396aac>;(命名者),ruby,sequel,Ruby,Sequel,我必须动态调用对象obj上的方法列表。 我试图实例化一个方法对象,然后调用它 method_name(字符串)是可以在对象obj上调用的方法的名称 meth=obj.method(method_name) #method_name is a string meth.call = mod 我得到以下错误: #(NoMethodError)的未定义方法'call=' 我正在使用Sequel ORM,必须动态保存模型关联。 如果我直接调用方法\u name(当方法\u name不是字符串时),那么下

我必须动态调用对象obj上的方法列表。 我试图实例化一个方法对象,然后调用它

method_name(字符串)是可以在对象obj上调用的方法的名称

meth=obj.method(method_name) #method_name is a string
meth.call = mod
我得到以下错误:

#(NoMethodError)的未定义方法'call='

我正在使用Sequel ORM,必须动态保存模型关联。 如果我直接调用方法\u name(当方法\u name不是字符串时),那么下面的代码可以正常工作

obj.method_name = mod #working
但是,当method_name是字符串时,下面给出了一个语法错误:

obj.send(method_name) = mod #not working
语法错误,意外的“=”,应为关键字\u end


因此,我无法使用上述任何一种方法从名称中以字符串形式调用方法。

如果名为
method\u name
的方法使用
mod
参数,请尝试:

obj.send(method_name, mod)

如果您正在分配内容,则
方法\u name
应以
=
结尾
调用的正确语法为

call(args, ...)
[]

(不要在调用后放置
=
,只需列出用逗号分隔的参数)

同样,这种方法也是做类似事情的好方法(可能更好)。

可能与