2010-06-23 63 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