2010-06-23 65 views
2

如何将值传递给在rails模型上调用的动态方法名称?传递值的ruby动态方法

@model.send(dynamic_method_name.to_sym,123) 

这给了错误:

wrong number of arguments (1 for 0) 

如果我是这样使用同样的方法,但:

@model.post_id = 123 

然后它工作。

所以有一个方法post_id(因此动态方法名称)的“setter”方法。

当该方法是动态的时,我该如何将值传递给此setter?

的感谢!

回答

8

您需要将“=”添加到dynamic_method_name。在红宝石中,:post_id是吸气剂的名称,而:post_id=是吸气剂的名称。 .to_sym并非严格必要,因此您可以这样做:

@model.send("#{dynamic_method_name}=", 123) 
+0

完美。谢谢! – djburdick 2010-06-23 06:58:30

+0

你真是太棒了,非常感谢! – 2012-12-13 06:18:47