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

  • habpsu

    habpsu

    25 Temmuz 2007
  • infodirt

    infodirt

    11 Mart 2009
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011