在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