4.0 için Gözlemci Alternatifleri raylar
Gözlemciler ile resmen removed from Rails 4.0, diğer geliştiriciler onların yerine ne kullanıyor merak ediyorum. (Gem. çıkarılan) kullanarak başka Gözlemciler kesinlikle istismar edildi ve kolayca zamanlarda unwieldily olabilir iken, sadece faydalı oldukları önbellek temizleme dışında kullanım-durumları pek çok kişi vardı.
Örneğin, bir model değişiklikleri izlemek için gereken bir uygulama. Gözlemci kolay Bir Model üzerinde değişiklikleri izlemek ve veritabanı Model B ile bu değişiklikleri kaydeder. Eğer çeşitli modeller üzerinde değişiklik için izlemek istiyorsan, o zaman tek bir gözlemci üstesinden gelebilir.
İçinde Raylar diğer geliştiriciler Gözlemciler yerine bunu yeniden oluşturmak için kullanıyor merak ediyorum, 4, işlevsellik.
Kişisel olarak, "şişman denetleyicisi, nerede uygulaması bu değişiklikleri her model kumanda izlenir"/update/delete yöntemi oluşturun. bir çeşit yanayım Her kumandanın davranış hafifçe oluşup şişmeden olsa da, okunabilir olmaları için yardımcı olan ve tüm kod kadar anlayışlı bir yerdir. Dezavantajı şimdi çok benzer bir kod birkaç denetleyicileri dağılmış. Yardımcı yöntemler içine bu kodu açılan bir seçenektir, ama yine de bu yöntemleri her yere saçılmış çağrı ile sol konum. Dünyanın sonu değil, ama "zayıf denetleyicileri" ya. ruhu oldukça değil
ActiveRecord geri ben iki farklı model çok yakından bence birlikte birkaç eğilimi şahsen sevmiyorum ama başka bir olası seçenek vardır.
Raylar 4, başka bir kayıt oluşturulduktan sonra, eğer yeni bir kayıt oluşturmak için olsaydı hiç Gözlemciler, güncellenmiş dünya//yok, tasarım desen ne kullanacaksın? Yağ denetleyicileri, ActiveRecord geri aramaları, ya da tamamen başka bir şey mi?
Teşekkür ederim.
CEVAP
Concerns bir göz atın
Modellere bir klasör dizini endişeleri oluşturun. Bir modül ekleyin:
module MyConcernModule
extend ActiveSupport::Concern
included do
after_save :do_something
end
def do_something
...
end
end
Sonraki modellerde after_save çalıştırmak için istediğiniz vardır:
class MyModel < ActiveRecord::Base
include MyConcernModule
end
Ne yaptığınızı bağlı olarak, bu gözlemciler olmadan yakın olabilir.
Raylar 3: Nasıl gözlemci olarak after_...
Nasıl (dişliler) varlık boru hattı ile...
Raylar Geçiş bir dosyayı geri almak iç...
Nasıl Raylar ile ilgili 4 kullanmak iç...
Nasıl raylar özel bir yapılandırma değ...