2013-06-14 14 views
24

Active Record ilişkisinden bir dizi kimlik almanın kolay/hızlı bir yolunu arıyorum. BöyleRails Active Record - İlişkilendirmeye ait ids dizisi alın

şey soğutucu olurdu ..

product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id} 

Ama bu dağınık ve bir harita gerektirir:

Şu ı var

product_ids = Product.where(:colour => 'blue').ids 

Herhangi bir fikir?

Teşekkür :)

+4

Koparmak burada en iyi çözümdür ama sadece Btw olarak: yerine haritası { 'arasında | p | p.id} 'haritayı yazabilirsiniz (&: id)'. Bu ('each',' herhangi? ',' Select', 'reject' vs.) tüm Enumerator'lar için de geçerlidir ve her içinden döngüler nesne üzerinde sembolü arayacak. Bu kadar yazarken 'sadece zihinsel boş vardı: (id &): – jokklan

+0

oh evet, ben haritası' bildiğini P Fair – complistic

+0

yeterli: P! Ama yine de bu soruyu okuyan diğer kullanıcılar için bilmek güzel :) – jokklan

cevap

52

Biraz daha düzgün çözüm:

Product.where(:colour => 'blue').pluck(:id) 
+0

Teşekkürler, bu harika çalışıyor! o dokümanlarında Hesaplamalar altında olduğu gibi daha önce bulamadık .. http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html – complistic

7

okuduğunuz bilmek.

supplier.product_ids 

tedarikçiye ait ürün kimliklerinin dizinizi döneceğini: sonra Supplierhas_manyProducts, eğer örnekte Yani

.

İlgili konular