4

He ** llo、次のようなIndextankインデックスが与えられた場合:class Threads <ActiveRecord :: Base has_many:permissions
include Tanker

  tankit 'rails_3_demo' do
    indexes :content
  end

  after_save :update_tank_indexes
  after_destroy :delete_tank_indexes

end

このインデックスは私のスレッドモデルに存在します。問題は、スレッドに権限があることです。現在、ユーザーがインデックス全体を検索できるようにすると、すべてのユーザーのスレッドを検索することになります。ユーザーがアクセスするアクセス許可を持っているスレッド間でのみ検索できるように、アクセス許可を処理するスマートな方法は何ですか。ありがとう**

スキーマ:

USER (id)
PROJECT (id)
PERMISSION (user_id, project_id)
Thread (project_id)

ユーザーがプロジェクトの権限レコードを持っている限り、そのプロジェクトのすべてのスレッドを表示できます。

4

1 に答える 1

5

これを行う1つの方法は、アクセス許可にインデックスを付け、クエリに「ANDpermissions:[value]」を追加することです。ここで、valueはユーザーに一致するアクセス許可です。そうすれば、ユーザーには適切な権限を持つ結果のみが表示されます。

詳細を説明するために、パーミッションスキームを知る必要がありますが、たとえば、インデックスを作成するパーミッション変数は、それらのユーザーのみがアクセスできるスレッドの「rootjoebobjim」などの単語を含む文字列にすることができます。

于 2011-05-22T07:29:22.623 に答える