在RoR应用程序中,我想在我的一个模型中专门化ActiveRecord的update_attributes()方法,提取一些特殊处理的属性并将其余的部分传递给原始的update_attributes()方法。细节:Ruby/RoR:通过super()调用原始方法?
class Premise < ActiveRecord::Base
...
def update_attributes(attrs)
attrs.each_pair do |key, val|
unless has_attribute?(key)
do_special_processing(key, val)
attrs.delete(key)
end
end
# use original update_attributes() to process non-special pairs
super.update_attributes(attrs)
end
...
end
到super.update_attributes(attr)使用这个调用产生了一个错误:
undefined method `update_attributes' for true:TrueClass
...这使我怀疑我真不明白,在Ruby中super关键字。我错过了什么?具体来说,我如何调用原始的update_attributes()方法?
在这种情况下,'update_attributes(attrs)'和'super(attrs)'的参数是相同的。你可以简单地调用'super',而不用括号。 – 2011-02-28 21:29:43
@LBg啊,谢谢,好点。关于这个问题,我在答复结束时也纠正了一下;我原本写这个问题的代码被称为update_attributes没有参数,但这是不正确的。 – DSimon 2011-03-01 15:12:38
宾果 - 谢谢。我作为Java程序员的过去正在通过... – 2011-03-01 21:50:17