2012-11-14 62 views
3

完全停留在此並可以使用一些幫助!Rails + Squeel查詢問題

我讓用戶輸入某些偏好,然後根據這些偏好向每個用戶顯示一組結果。

有用戶和這些偏好之間的關係HABTM:

User.rb

has_many :userpreferences 
has_many :preferences, through: :userpreferences 

Preferences.rb

has_many :userpreferences 
has_many :users, through: :userpreferences 

Userpreferences.rb

belongs_to :user 
belongs_to :preference 

現在,首選項有一個名爲「標籤」的屬性,列出了某些細節:即大,小,厚等。

我想根據自己的喜好顯示每個用戶的項目(即基於偏好的標籤他們選擇)。

現在我想:

current_user.preferences.all.each do |p| 
     query = p.tags.split(' ') 
      @items = Item.where{title.like_any query} 

現在,出於某種原因,這隻能查詢的第一選擇標籤。

例如,如果首選項1的標籤爲:[「black」,「leather」,「suede」] ,而首選項2的標籤爲:[「brown」,「cloth」] ......只有第一組作爲查詢被傳遞。

回答

0

想出來 - 對任何有興趣的人來說,這與Squeel無關!

我是如何在查詢之前組織循環的。

解決方案!

query = [] 
     current_user.preferences.each do |p| 

     query << p.tags.split(' ') 
     end 
      @items = Item.where{title.like_any query}