在ruby中修改数据模型的求值字符串

在ruby中修改数据模型的求值字符串,ruby,Ruby,我似乎遇到了Rails 3的问题,我似乎无法解决它。 以下是我正在尝试做的: att1 = "column" att2 = "1" final_column = "#{att1}_#{att2}" obj.final_column = 4 ====> Error -----> NoMethodError: undefined method `final_column=' for class.... 如果我这样做,它仍然有效: 我能对我的最后一栏做些什么来让它发挥作用? 谢

我似乎遇到了Rails 3的问题,我似乎无法解决它。 以下是我正在尝试做的:

att1 = "column"
att2 = "1"
final_column = "#{att1}_#{att2}"

obj.final_column = 4
  ====> Error
  -----> NoMethodError: undefined method `final_column=' for class....
如果我这样做,它仍然有效:

我能对我的最后一栏做些什么来让它发挥作用? 谢谢

您想这样做:

obj.send("#{final_column}=", 4) 

如果您想尊重私有/受保护的可视性,请使用
public\u send
而不是
send

这正是我想要的,我想避免使用点符号,这样做很有效。你知道有没有不好的一面吗?@MarcoA一个潜在的问题是
send
绕过
private
/
受保护的
可见性,因此可以调用一个你无法调用的方法。它可能会让人困惑,并且容易出错。此外,您不希望使用来自浏览器或任何用户输入的字符串。比如,如果您执行了“@account.send(some_action)”,但用户将“some_action”设置为“destroy”,该怎么办。你会有麻烦的。谢谢@AndrewMarshall这很有道理
obj.send("#{final_column}=", 4)