Uzanan ActiveRecord::raylar Bankası
ActiveRecord genişletme hakkında biraz okuma yaptım:Temel sınıf benim modeller bazı özel yöntemleri var. (Adım adım öğretici) genişletmek için kolay yolu nedir?
CEVAP
Çeşitli yaklaşımlar vardır :
ActiveSupport::Kullanarak Endişe (Tercih Edilen)
Daha fazla ayrıntı için ActiveSupport::Concern belgeleri okuyun.
Bir dosya lib
dizin active_record_extension.rb
oluşturun.
module ActiveRecordExtension
extend ActiveSupport::Concern
# add your instance methods here
def foo
"foo"
end
# add your static(class) methods here
module ClassMethods
#E.g: Order.top_ten
def top_ten
limit(10)
end
end
end
# include the extension
ActiveRecord::Base.send(:include, ActiveRecordExtension)
config/initializers
dizin extensions.rb
adlı bir dosya oluşturmak ve bu dosyaya aşağıdaki satırı ekleyin:
require "active_record_extension"
Miras (Tercih Edilen)
Toby bakın. answer.
Maymun yama (kaçınılmalıdır)
config/initializers
dizin active_record_monkey_patch.rb
adlı bir dosya oluşturun.
class ActiveRecord::Base
#instance method, E.g: Order.new.foo
def foo
"foo"
end
#class method, E.g: Order.top_ten
def self.top_ten
limit(10)
end
end
Jamie Zawinski Düzenli ifadeler hakkında şu ünlü sözü yeniden amaçlı sorunları maymun-yama ile ilişkili göstermek için olabilir.
Bir sorun ile karşı karşıya zaman bazı insanlar, “ben bilirim, kullanırım sanırım maymun yama.” Şimdi iki sorun var.
Maymun yama kolay ve hızlı. Ancak, zaman ve çaba kaydedilen her zaman geri çıkarılır bileşik faiz ile gelecekte;. Bu gün maymun yama hızlı raylar bir çözüm, bir konsol prototip için sınırlandırıyorum.
ActiveRecord 3 kapsam vs sınıf yöntemi...
Nasıl Dizi Raylar KİMLİĞİ istisnasız A...
Raylar için devre dışı ActiveRecord 4...
Hata Raylar üzerinde Yakut nasıl: &; L...
Nasıl kapsam ActiveRecord dernekler Ra...