2013-11-23 27 views
6

ben modelinden 1 nasıl benraylar 4 eşzamanlı

Düzenleme buraya where in koşulu

model = (1,2,3,4) 
@posts = Post.where(category_id: id, product_model_id: model) 

Benim yukarıda sorgu justing alarak aşağıdaki sorguyu kullanabilirsiniz gelmiş -1

Bu kod parçası işe yarıyor, ancak bunu iyi bir kod olarak görmüyorum.

@posts = Post.where("category_id = ? and product_model_id in (#{model})", id) 

Düzenleme-2

Ben

@posts = Post.where kullanırsanız ("category_id =? Ve (?) Içinde product_model_id", id, modele)

invalid input syntax for integer: "15,16" hatası verildiğinde giriş yaptığınız gibi

sonra bunu düzeltmek için nasıl

select * from posts where category_id=5 and product_model_id in ('15,16')

..

+0

kod yerleştirme tabidir, sen olamaz: Model = (1,2,3,4) Ruby'de bir diziye atıfta bulunuyorsunuz ??? – bjhaid

+0

@bjhaid Lütfen benim düzenleme – overflow

+0

benim bir bakışta – bjhaid

cevap

14
model_ids = model.split(",").map(&:to_i) 
@posts = Post.where(category_id: id, product_model_id: model_ids)</code> 

veya

model_ids = model.split(",").map(&:to_i) 
@posts = Post.where("category_id = ? AND product_model_id IN (?)", id, model_ids) 
+0

aşağıdaki cevabı görmek istiyorum 'user_ids = User.all.ids' ve sonra Post.where (" user_id in (?) ", User_ids)' – mtfk

2

Sen Arel kullanabilirsiniz, ama sadece böyle bir şey yapacağını:

@posts = Post.where("category_id = ? AND product_model_id IN (?)", id, model)

14

raylar kılavuzuna göre, geçebilir bir dizide where ve IN kullanmak istediğiniz anlamak gerekir. Kılavuza bakın: http://guides.rubyonrails.org/active_record_querying.html#subset-conditions

model = (1, 2, 3, 4) geçerli dizilim sözdizimi gibi görünmediğinden, sözdiziminizle biraz kafam karışmış durumdayım.

kılavuzun

İlgili kısmı:

Client.where(orders_count: [1,3,5])