传递值的ruby动态方法

时间:2010-06-23 06:12:38

标签: ruby-on-rails ruby

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

@model.send(dynamic_method_name.to_sym,123)

这给出了错误:

 wrong number of arguments (1 for 0)

如果我使用相同的方法,那么:

 @model.post_id = 123

然后它有效。

因此post_id方法有一个“setter”方法(因此也就是动态方法名称)。

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

谢谢!

1 个答案:

答案 0 :(得分:8)

您需要在dynamic_method_name中添加“=”。在ruby中,:post_id是getter的名称,:post_id=是setter的名称。 .to_sym并非绝对必要,因此您可以这样做:

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