Ruby 在 Rails CanCan Gem
Ruby on Rails CanCan Gem
我对 CanCan 有点困惑 Gem。我基本了解如何设置abillity.rb。例如,我们有以下代码:
// in abillity.rb
user ||= User.new
can [:update, :destroy, :edit, :read], Book do |book|
book.dashboard.user_id == user.id
end
然后假设我们有以下书籍控制器:
// books_controller.rb
load_and_authorize_resource
def destroy
if can?(:destroy, @book)
@book.destroy!
redirect_to happy_world_path
else
redirect_to not_happy
end
end
我的问题是:我们需要检查 'can?(:destroy, @book)' 吗?
据我了解,如果我们没有能力销毁它,'load_and_authorize_resource' 甚至不允许访问该方法。
如果您使用 load_and_authorize_resource
,您无需在操作中添加 if can?(:destroy, @book)
喜欢README说
Setting this for every action can be tedious, therefore the load_and_authorize_resource method is provided to automatically authorize all actions in a RESTful style resource controller.
如果未经授权的用户试图破坏,他会得到未经授权的响应(不记得是否是 401 代码)
也许您可以在您的视图中使用 if can?(:destroy, @book)
,以不显示销毁按钮。同样在 Check Abilities & Authorization 部分
我对 CanCan 有点困惑 Gem。我基本了解如何设置abillity.rb。例如,我们有以下代码:
// in abillity.rb
user ||= User.new
can [:update, :destroy, :edit, :read], Book do |book|
book.dashboard.user_id == user.id
end
然后假设我们有以下书籍控制器:
// books_controller.rb
load_and_authorize_resource
def destroy
if can?(:destroy, @book)
@book.destroy!
redirect_to happy_world_path
else
redirect_to not_happy
end
end
我的问题是:我们需要检查 'can?(:destroy, @book)' 吗? 据我了解,如果我们没有能力销毁它,'load_and_authorize_resource' 甚至不允许访问该方法。
如果您使用 load_and_authorize_resource
if can?(:destroy, @book)
喜欢README说
Setting this for every action can be tedious, therefore the load_and_authorize_resource method is provided to automatically authorize all actions in a RESTful style resource controller.
如果未经授权的用户试图破坏,他会得到未经授权的响应(不记得是否是 401 代码)
也许您可以在您的视图中使用 if can?(:destroy, @book)
,以不显示销毁按钮。同样在 Check Abilities & Authorization 部分