如何将值传递给在rails模型上调用的动态方法名称?
@model.send(dynamic_method_name.to_sym,123)
这给出了错误:
wrong number of arguments (1 for 0)
如果我使用相同的方法,那么:
@model.post_id = 123
然后它有效。
因此post_id方法有一个“setter”方法(因此也就是动态方法名称)。
当方法是动态的时,如何将值传递给此setter?
谢谢!
答案 0 :(得分:8)
您需要在dynamic_method_name中添加“=”。在ruby中,:post_id
是getter的名称,:post_id=
是setter的名称。 .to_sym
并非绝对必要,因此您可以这样做:
@model.send("#{dynamic_method_name}=", 123)