完全坚持这个并且可以使用一些帮助!
我让用户输入某些偏好,然后根据这些偏好向每个用户显示一组结果。
用户与这些偏好之间存在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
现在,首选项有一个名为“tags”的属性,列出了某些细节:即大,小,厚等。
我想根据用户的偏好显示每个用户的项目(即根据他们选择的偏好标签)。
现在我正在尝试:
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 :(得分:0)
想出来 - 对于任何有兴趣的人,这与Squeel无关!
我在查询之前是如何组织循环的。
<强>解决方案<!/强>
query = []
current_user.preferences.each do |p|
query << p.tags.split(' ')
end
@items = Item.where{title.like_any query}