[英]cancancan ability returns false but is still accessible?
我有一個標准的康康康設置。 文章approved
有一個屬性 authorized 。 然后標准設置:
# articles controller
load_and_authorize_resource only: [:index, :show]
def show
end
# ability.rb
# Solution 1
# can :show, Article, { approved: true }
# Solution 2
can [:show], [Article] do |article|
article.approved?
end
當我嘗試任一解決方案時,結果會在控制台或調試器中按預期返回(即,如果文章已獲批准,則ability.can?(:show, @article)
返回 true,否則返回 false)。
奇怪的是,當上面返回的false
清楚地表明它不應該被訪問時,仍然可以在瀏覽器中訪問顯示視圖。
我想不通為什么?
在另一個論壇中進行了很多幫助調試后,我們從未弄清楚為什么上述方法不起作用。 但是通過不使用load_and_authorize_resource
來實現所需的行為,而是將其放在 controller 操作中:
authorize! :show, @article
我很想知道為什么這種方法有效,但最初的方法沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.