Bir RoR uygulamasında, modellerimden birinde ActiveRecord'un update_attributes() yöntemini uzmanlaşmak ve özel işlemlerin bazı özniteliklerini ayıklamak ve geri kalanını orijinal update_attributes() yöntemine aktarmak istiyorum. ayrıntıları:Ruby/RoR: Orijinal metodu super() ile mi çağırıyorsunuz?
undefined method `update_attributes' for true:TrueClass
... benim gerçekten Ruby süper anahtar kelimeyi anlamıyorum şüpheli yapar:
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 (öznitelik) çağrısı bir hata yükseltir. Neyi kaçırıyorum? Özellikle, orijinal update_attributes() yöntemini nasıl arayabilirim?
Bu durumda, 'update_attributes (attrs)' ve 'super (attrs)' üzerindeki argümanlar aynıdır. Parantez olmadan "süper" diyebilirsiniz. –
@LBg Ah, teşekkürler, iyi bir nokta. Bununla ilgili cevabımın sonunda da biraz düzeltdim; Orijinal olarak, sorudaki kodun argüman içermeyen update_attributes adlı olduğunu yazmıştım, ancak bu doğru değil. – DSimon
Bingo - teşekkürler. Bir java programcısı olarak geçmişim geçiyor ... –