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 回答