2016-04-04 47 views
-2

的關注是我的查詢來獲取產品列表:Ruby on Rails的得到查詢獨特的國家造成

@listed_products = @products.where(:step => 5, :status => 1) 
          .includes(:product_attachments) 
          .includes(:product_reviews) 
          .order("created_at desc") 

結果回報的產品也由許多類似country如:

name:prod1 
city:city1 
country:A 

name:prod2 
city:city3 
country:A 

name:prod3 
city:city5 
country:B 

哪有我從結果查詢中篩選出唯一的國家A,B?我只需要國家列表來建立一個下拉列表,供用戶根據國家對產品進行分類。謝謝!!

+0

鑑於上面的結果集,什麼'prod'應該'國家被退回:A':'prod1', 'prod2'還是隨機?無論你是否需要國家名單,爲什麼你想從產品查詢中得到它? – mudasobwa

+0

@mudasobwa可以'@ listed_products'只是爲了列出獨特的國家名稱?例如'@ listed_products_country'列出國家名稱。 – d3bug3r

+0

嘿你剛使用'@ products.where(:step => 5,:status => 1)uniq國家.pluck(:country).uniq'而不是使用這個附加包括beacuse根據您的查詢它將沒有意思是在uniq國家 –

回答

2

你可以試試這個 -

@listed_products = @products.where(:step => 5, :status => 1) 
         .includes(:product_attachments) 
         .includes(:product_reviews) 
         .order("products.created_at desc") 

result = @listed_products.pluck(:country).uniq 
+0

我需要單獨的查詢,'@ listed_products'只是列出所有列表。 – d3bug3r

+0

'@ listed_products.pluck(:country).uniq' - 如果您已擁有'@ listed_products'中的所有記錄,則應該執行此項工作。 – dp7

+0

does not work,給出錯誤 – d3bug3r

0

試試下面的代碼:

@listed_products = @products.where(:step => 5, :status => 1) 
          .includes(:product_attachments) 
          .includes(:product_reviews) 
          .order("created_at desc").uniq.pluck(:country) 
+0

不工作,給出了一個錯誤 – d3bug3r