2
我有一個Rails 3網站,我正在使用的用戶是在「文檔」上進行操作。如何根據用戶角色限制返回的記錄?
如果每個文件在我的文檔控制器有一個USER_ID然後編輯方法,我可以將結果限制爲當前用戶喜歡的東西擁有的文件:
@doc = current_user.documents.find(params[:id])
respond_with(@doc)
不幸的是,它不是那麼簡單。每個用戶都可以通過中間「訂閱」與文檔建立關係 - 他們可以是所有者,編輯或讀者。
所以,現在,在我的編輯方法中,我希望能夠將檢索到的文檔限制爲所有者或編輯者。我該怎麼做呢?目前,我有喜歡我的文檔模型範圍:
scope :editable_by, lambda { |user| joins(:subscriptions).where("user_id = ? AND (subscriptions.role = ? OR subscriptions.role = ?)", user.id, Subscription::ROLES['owner'], Subscription::ROLES['editor']) }
,這樣我就可以去我的編輯方法:
@doc = Document.editable_by(current_user).find(params[:id])
是否有更好的辦法嗎?
Ta。那我就去吧。很高興知道我有點正確。 – kmc 2011-01-14 11:19:59