2012-08-09 71 views
1

關聯我在我的應用程序的當前數據庫estructure:授權與慘慘,設計和Rolify

Publisher has_many videos, has_many users 
Video  belongs_to publisher 
User  belongs_to publisher 

我希望能夠給權限基礎上,發行商的用戶,但對象實際上被編輯它是視頻對象。

這意味着用戶X可以編輯來自發布者1和2的視頻,但用戶Y只能編輯來自發布者2和3等的視頻。我很確定這可以用CanCan,Devise和Rolify組合來完成。

任何人都可以在正確的方向指向我嗎?

+0

什麼是連接用戶X到發佈者1和2的邏輯? – Max 2012-08-09 20:05:57

+0

更新了關係:)! @Max – Gotjosh 2012-08-09 20:16:49

回答

1

抱歉,延遲響應。希望你現在已經明白了你的問題,但我會爲你提供一個解決方案。

在你慘慘的能力,你有這樣的事情:

def initialize(current_user) 
    current_user ||= User.new 

    can :update, Video do |video| 
    current_user.publisher_list.contains? video.publisher 
    end 
end 

如果user.publisher_list返回出版商用戶可修改的列表,上面的代碼將正常工作。我相信你也可以這樣做:

def initialize(current_user) 
    current_user ||= User.new 

    can :update, Video, publisher: {id: current_user.publisher_list} 
end 
+0

我已經以不同的方式想出了它,但這個也可以。非常感謝。 – Gotjosh 2012-08-21 20:14:33