2012-06-03 47 views
0

我有一個Repository模型如下唯一實例:列表允許用戶看到(他擁有接入公共或私人)

class Repository < ActiveRecord::Base 

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

end 

它有一個private布爾屬性,表示如果它是一個公共倉庫即對每個人都可見。或者如果它是私人存儲庫並且只有他的成員才能看到。

什麼是最好的方式來檢索只有存儲庫的用戶才能看到?

邏輯是:如果它是公開的,只需檢索它。如果它是私密的,請檢查用戶是否在成員列表中。

我相信我只是需要創建一個方法來檢查這個在Repository控制器,並用它來驗證用戶是否有權訪問它。但我無法弄清楚最好的辦法!

回答

2

簡單的方法是使用授權庫。我在我的所有項目中都使用CanCan

您可以以乾淨可讀的方式聲明訪問權限。

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

然後再檢查授權。僅當current_user可以訪問項目時,此行纔會顯示鏈接。

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

欲瞭解更多信息,請閱讀康康的維基。