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
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"])
Nasıl ActiveRecord modeli ve Raylar ta...
Nasıl kimliği bir nokta içeriyorsa jqu...
nasıl raylar için html kimliği form_ta...
Nasıl kayıt raylar tarafından bugün ya...
Nasıl bir WordPress kullanmak için bel...