SORU
1 Mart 2013, Cuma


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
2 EYLÜL 2013, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007