SORU
17 EYLÜL 2009, PERŞEMBE


Nasıl Dizi Raylar KİMLİĞİ istisnasız ActiveRecord yeri seçmek için

Kimlikleri bir dizi var, gibi

ids = [2,3,5]

ve ben gerçekleştirmek

Comment.find(ids)

her şey gayet iyi çalışıyor. Ama yok kimlik yok, bir istisna olsun. Bu filtre ile eşleşen ve bir şey gibi benden kimlik listesi almak zaman genellikle oluşur

current_user.comments.find(ids)

Bu sefer bulmuş değil, ancak belirli Kullanıcıya ait olmayan geçerli bir açıklama KİMLİĞİ var, ben de bir istisna olsun.

find(:all, ids), denedim ama tüm kayıtları döndürür.

Bunun tek yolu artık

current_user.comments.select { |c| ids.include?(c.id) }

Ancak süper verimsiz bir çözüm gibi geliyor bana.

Seçmek için iyi bir yol yokturDizideki KİMLİĞİmevcut olmayan özel durum olmadan kayıt?

CEVAP
12 Temmuz 2012, PERŞEMBE


Güncelleme: Bu cevap Raylar için uygun 4.x

Bunu yapmak için:

current_user.comments.where(:id=>[123,"456","Michael Jackson"])

Bu yaklaşımın güçlü tarafı olan katılabilirsiniz Relation bir nesne, daha fazla .where maddeleri .limit, vb. hükümler verir, çok yararlıdır. Ayrıca var olmayan Kimlikleri bloklarından olmadan sağlar.

Yeni Ruby sözdizimi olacaktır:

current_user.comments.where(id: [123, "456", "Michael Jackson"])

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • RinconDynamic

    RinconDynami

    1 EKİM 2011
  • Crossover

    Crossover

    18 HAZİRAN 2007