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

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • Droid Life

    Droid Life

    17 Kasım 2009
  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008