1

テーブルボード、ユーザー、結合、およびロールがあります。結合テーブルは、ボードに対するユーザーの関連付けと、そのボードでのユーザーの役割を定義します。ユーザーが各ボードでどのような役割を持っているかを区別する方法で一度にすべてのユーザーのボードを取得するか、ユーザーが特定の役割であるボードを取得するために 3 つの個別の呼び出しを行うかのいずれかを試みています。

私が持っているボードモデルでは:

  define_index do
    indexes :name
    indexes description

    has created_at
    has users(:id), :as => :user
    has joins.role_id, :as => :role

    set_property :enable_star => true
    set_property :min_infix_len => 1
  end

そして、私はこれに似たクエリを試してきました:

Board.search(:with => {:user => some_user.id, :role => some_role.id})
Board.search(:with => {:user => some_user.id}, :group_function => :attr, :group_by => 'role')

最初のクエリの問題は、各ボードにはそれぞれの可能な役割を持つユーザーが存在するため、特定の役割のボードではなく、ユーザーが関連付けられているすべてのボードを取得することです。2 つ目については、同じボードだけが 3 回戻ってきた理由はわかりませんが、実際にはそうなっています。

ヘルプ/ヒントをお寄せいただきありがとうございます。

4

1 に答える 1

0

グループ化されたクエリを実行すると、グループごとに 1 つの一致する結果が返されます。ボードには 3 つの役割があるため、グループごとに特定のボードが返されているようです。

単一のクエリでやりたいことを実際に行うことはできないと思います(つまり、ロール値を特定のユーザーに制限する)-Sphinxは関係について何も考えていないためです。

申し訳ありませんが、これ以上お役に立てません。

于 2009-07-17T04:31:04.953 に答える