我想使用自定义设置器来对字段进行一些格式设置。在irb中,如果我测试setter:如何访问我覆盖的Activerecord setter?
o.field_name = "4"
我看到我的自定义setter被引用。但是,与此是不:
o[:field_name] = "4"
据我所知,在第一种情况下,这是一个函数调用,并在第二种情况下,我们只是直接设置属性。但是我没有完全看到如何通过我们的自定义设置器来设置属性,我认为这是关键。
但我的主要问题是,如果var拥有我的field_name,我看不到如何动态引用a.var并将其解释为a.field_name。我所看到的只是一个[var],这绕过了我的制定者。
啊,所以这个问题问的是什么? :O + 1确实是多才多艺的。另外请看一下eval进行动态评估。 – Spyros 2011-04-04 04:50:21
啊我需要检查!ruby对象页面,那里有很多功能,我错过了。但用法似乎是:a.send var.to_sym val这给我一个运行时错误,而a.send(var.to_sym)= val给我一个语法错误。我不知道,我即将放弃这个设置者作为格式化员的想法。 – 2011-04-04 15:30:58
这不应该给你一个错误。val是零或什么的。顺便说一句,你不需要调用to_sym,send可以处理纯字符串。 – 2011-04-04 17:32:51