我有一個簡單Ability.rb設置如下:Rails的康康舞哈希不工作
if user.role? :super_admin
can :manage, :all
elsif user.role? :registered
can :review, [Card, Deck], :visible => true
end
凡alias :review => :index, :list, :show, :to
。 Card和Deck表都有帶布爾選項的可見列。目前表中的每個對象都有:visible => false
。因此,我預計具有註冊角色的用戶將無法使用任何對象,但情況並非如此。在控制器級別的限制工作正常(編輯和刪除不可訪問),但我似乎無法限制使用條件的散列查看資源。有什麼想法嗎?
編輯:我有兩個控制器中的authorize_resource
。使用Ruby 1.9.2,Rails 3.1和CanCan 1.6.7。我使用devise 1.4.9進行身份驗證。 MySQL是數據庫。
編輯: 嗯..我想出了一種方法來限制基於條件的資源。儘管我在我的所有控制器中都有authorize_resource(並且它用於限制對方法的訪問),但我必須將authorize!
添加到我想要限制資源的方法中。例如,以限制與:visible => true
條件橋面表演動作,我不得不添加authorize!
這樣:
def show
@deck = Deck.find(params[:deck_id]
authorize! :review, @deck
end
說實話,我很不滿意這個解決方案,因爲我沒有看到原因爲什麼authorize_resource
不起作用。我很想看到一個解釋。
更換
authorize_resource
有同樣的問題,你有沒有結束找到一個合適的解決方案? – twe4ked不幸的是,我還沒有找到解決方案。該項目被放棄了,我在未來的項目中沒有遇到這個問題。 – Viet