Rayları sunanlar kullananlar - 3.1'de kullanımdan kaldırılabilir değil - kullanım yerine?

Sorun: Mümkün olduğunda birden fazla nesne veya birden fazla sorgu oluşturmamak.

Sunucular'ı En İyi Uygulama olarak raylarla kullanıyorum.

Ben @ the_record = kayıt || = @record stili birtakım sorunlar yüzünden - yanlış veya nil saklanmıyor, böylece sorgu tekrar deniyor ve bu memoizable daha iyi önbellek kullanıyor (yani kullanır!).

Ancak görüyorum ki bu memoizable raylarda kullanımdan kaldırılıyor Ben carrierwave altında ve deyim ile github notlar: "DEĞERLENDİRME UYARI: ActiveSupport :: Memoizable kullanımdan kaldırılacak ve sonraki sürümlerde kaldırılacak, bunun yerine sadece ruby not kalıbı kullanılacaktır." /Users/kain/.rvm/gems/ruby-1.9.3-preview1/bundler/ taşlar/carrierwave-c4459179b0f8/lib/carrierwave/mount.rb: 284" .

Belki de çözülmüştür? Herkes biliyor mu?

Gelecekte kullanmak için en iyi uygulama hakkında herhangi bir öneriniz var mı? || = sözdizimini kullan? Yukarıdaki konulardan ne haber?

enter image description here

6

1 cevap

|| = yöntemi, doğru olarak değerlendirilen değerleri döndüren şeyler için mükemmeldir, ancak olmayan şeyler için çok iyi çalışmaz. not al , bu koşulları yakalayıp buna göre geri dönerek çalışır. nil 'i barındırmak istiyorsanız şöyle bir yaklaşım uygulayabilirsiniz:

def some_method
  return @some_method if (instance_variable_defined?(:"@some_method"))

  @some_method = begin
    ...
  end
end

Bu, değişkenin tanımlanmış olup olmadığını kontrol eder, eğer ayarlanmışsa, bu sizin durumunuzda önemli bir ayrımdır.

Niçin kullanımdan kaldırıldığını düşündüğünüzden emin değilim [Michael'dan not, 3.2'de kullanımdan kaldırıldı, aşağıdaki nota bakın]. Belgeler , 3.1'de hala geçerli olduğunu gösterir. Bazen uygulamalar bir modülden diğerine taşınırken "kullanımdan kaldırılmış" olarak işaretlenir, ancak tesis kullanılabilir durumda kalır.

7
katma
Peki etrafa baktım ve belki eski bir uygulama önerilmiyordu. Her neyse, şimdi Memoizable ile gideceğim, biliyorum ki 3.1 Thx tadman'a güvenebilirim!
katma yazar Michael Durrant, kaynak
Uyarıyı bekledim, sunumcular ve notlar hakkında mükemmel raylar üzerinde. Onlar 'Zombiler için Raylar' olarak bilinir. Neyse, memoizasyon hakkında bilgi verdiler, ActiveSupport seçeneklerinin nasıl en iyi olduğunu ve henüz gerçek kod mücadelesinin "ActiveSupport :: Memoizable (not: ActiveSupport :: Memoizable Rails 3.1'de kullanımdan kaldırıldı)" olduğunu söyledi. Bu konuda hala emin değilim ve eğer kullanımdan kaldırılırsa yukarıdaki sorunların çözüleceği, vb.
katma yazar Michael Durrant, kaynak
3.2'den itibaren kaldırılmıştır: guides.rubyonrails.org/…
katma yazar m33lky, kaynak