Etkin bir kayıt modelinde, seçeneklerimizi gereksinimlerimize göre ayarladıktan sonra serializable_hash
yöntemini geçersiz kılıyor ve super options
numaralı telefonu arıyoruz.serializable_hash super, overridden yöntemimde tanımlanan seçenekleri nasıl alır?
Genellikle yapın:
def serializable_hash options=nil
options ||= {
only: [
:id,
:special_instructions
],
include: { images: nil },
methods: [:catalog_item_name, ]
}
super options
end
Ama modellerinden birini
, yanlışlıkla, biz süper yönteme açıkçaoptions
geçen
değil idi. Yine de, sanki seçenekleri geçiyormuş gibi çalışıyor gibi görünüyor.
serializable_hash source code okunduktan sonra, seçeneklerin süper yöntemde düzgün bir şekilde başlatılması için herhangi bir neden bulamıyoruz.
Bunun nasıl olduğuna dair ipuçları var mı? Doğal olarak, bir ruby komut dosyasındaki yapının yeniden üretilmeye çalışılması, aynı şekilde gerçekleşmesini sağlamaz gibi görünmektedir. (
module MyModule
def my_module_method options=nil
options ||= { test: 'Test' }
end
end
class MyTest
include MyModule
def my_module_method
options = { bingo: 'Bingo!' }
super
end
end
puts MyTest.new.my_module_method
Bu { test: 'Test' }
yazdırır ve biz (super options
) seçenekleri geçmesi halinde, Dan