SORU
9 Mart 2010, Salı


Nasıl kapsam ActiveRecord dernekler Raylar 3 musunuz?

Raylar 3 bir projem var. Ray 3 Öncesinde ve başka kurmak için bir kapsam yeniden kullanma olanağı geldi. Eğer bir ilişki tanımlarken kapsamları kullanmak için bir yol olup olmadığını merak ediyorum (örneğin,"") has_many.

İzin sütunları olan kayıtlar var. Kayıtlar (hatta bir ilişki ile erişilebilir) süzülür, böylece dikkate iznim sütunlar götüren bir default_scope inşa etmek istiyorum.

Halen, Raylar 3, default_scope (buldum yamalar dahil) bir yordam değişken bağlama için geç ihtiyacım var) Geçen çalışılabilir bir araç vermeyin. İçine adlı bir kapsam geçirilebilir bir has_many tanımlamak mümkün mü?

Adlı bir kapsam yeniden fikir gibi görünecektir:

Orders.scope :my_orders, lambda{where(:user_id => User.current_user.id)}
has_many :orders, :scope => Orders.my_orders

Veya dolaylı olarak ilişki içinde adlı kapsamı kodlama gibi görünecektir:

has_many :orders, :scope => lambda{where(:user_id => User.current_user.id)}

Sadece bağlama ile geç default_scope uygulamak için çalışıyorum. Öncesinde bir yaklaşım kullanmayı tercih ediyorum eğer bir tane varsa), fakat herhangi bir çalışılabilir seçeneği kullanın.

Geçerli kullanıcı bahsediyorum beri, mümkün olan en son anda, gibi: değerlendirilen olmayan koşulları itimat edemem

has_many :orders, :conditions => ["user_id = ?", User.current_user.id]

CEVAP
30 Mart 2010, Salı


"Named scopes are dead" bir göz atmanı öneririm

Orada ne kadar güçlü Öncesinde: açıklar yazar)

Yardımcı olur umarım.

#1 Mart 2014 DÜZENLEYİN

Bazı yorumlar devlet olarak, fark artık kişisel zevk meselesi.

Ancak, ben yine de şahsen bir üst katmana Öncesinde kapsamında kalmasını önlemek için tavsiye (bir denetleyicisi veya model doğrudan erişimi olan başka bir şey olmak, ve bunu yapmak gerekir:

  1. Bir kapsam oluşturun ve modelinizi bir yöntem aracılığıyla duyurmak. Bu yöntem denetleyici kalmanıza neden olur;
  2. Hiç bir zaman kendi denetleyicileri için modeller bunların üzerine hizmet katmanı falan mı var yani () ifşa ederse, o zaman iyisin. Yolsuzlukla mücadele katmanıhizmet ve kapsamları uygulanır hakkında çok fazla önemsemeden model kapsamında erişebilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andony5589

    andony5589

    7 Aralık 2011
  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007