0

次のようなRepositoryモデルがあります。

class Repository < ActiveRecord::Base

  belongs_to :user
  has_many :members, :class_name => :users
  has_many :datum

end

これはprivateブール属性を持ち、公開リポジトリかどうか、つまり誰にでも見えるかどうかを示します。または、それがプライベート リポジトリであり、メンバーのみが表示できる場合。

ユーザーが見ることを許可されているリポジトリのみを取得する最良の方法は何ですか?

ロジックは次のとおりです。公開されている場合は、取得するだけです。非公開の場合は、ユーザーがメンバー リストにあるかどうかを確認します。

コントローラーでこれをチェックするメソッドを作成し、Repositoryそれを使用してユーザーがアクセスできるかどうかを確認するだけでよいと思います。しかし、私はそれを行うための最良の方法を理解することはできません!

4

1 に答える 1

2

簡単な方法は、認可ライブラリを使用することです。私はすべてのプロジェクトでCanCanを使用しています。

きれいに読める方法でアクセス権を宣言できます。

can :read, Project, :active => true, :user_id => user.id

そして、後で承認を確認します。この行は、current_user がプロジェクトにアクセスできる場合にのみリンクを表示します。

<%= link_to 'A project', @project if can? :read, @project %>

詳細については、cancan の wiki を参照してください。

于 2012-06-03T23:16:29.650 に答える