3

これに完全にこだわっていて、助けが必要です!

ユーザーに特定の設定を入力してもらい、それらの設定に基づいて各ユーザーに一連の結果を表示しています。

ユーザーとこれらのプリファレンスの間には HABTM 関係があります。

ユーザー.rb

has_many :userpreferences
has_many :preferences, through: :userpreferences

Preferences.rb

has_many :userpreferences
has_many :users, through: :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"] の場合.......最初のセットのみクエリとして渡されます。

4

1 に答える 1

0

考え出した - 興味のある人にとっては、これは Squeel とは何の関係もありません!

クエリの前にループを整理していた方法。

解決!

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

        query << p.tags.split(' ')
        end
            @items = Item.where{title.like_any query}
于 2012-11-14T02:34:53.593 に答える