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

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007