Ruby on rails 设计管理路线
我有一个Desive用户,在里面我有admin作为布尔值默认为false。我如何在ruby on rails应用程序中修复我的路由,使其仅允许管理员访问某些页面,而管理员的admin为true 更新: 我改变了我得到的第一个答案,那就是创建一个is_管理员?方法,并指定哪些操作。但是,当我这样做时,我会得到:Ruby on rails 设计管理路线,ruby-on-rails,devise,Ruby On Rails,Devise,我有一个Desive用户,在里面我有admin作为布尔值默认为false。我如何在ruby on rails应用程序中修复我的路由,使其仅允许管理员访问某些页面,而管理员的admin为true 更新: 我改变了我得到的第一个答案,那就是创建一个is_管理员?方法,并指定哪些操作。但是,当我这样做时,我会得到: undefined method `admin' for nil:NilClass 更新2: 产品控制员: class ProductsController < Applicati
undefined method `admin' for nil:NilClass
更新2:
产品控制员:
class ProductsController < ApplicationController
before_action :is_admin?, only: [:edit, :update, :destroy]
before_action :set_product, only: [:show]
def is_admin?
if signed_in?
redirect_to root_path unless current_user.admin
end
end
您不应该在routes文件中执行此操作,最好在控制器过滤部分执行此操作。注意
:验证用户身份代码>方法位于is_admin?之前?。否则,当前用户
将为零
class PagesController < ApplicationController
before_action :authenticate_user!
before_action :is_admin?, only: [:action1, :action2]
...
private
def is_admin?
unless current_user.is_admin?
flash.alert = "Sorry, you don't have permissions to perform this action."
redirect_to root_path
end
end
end
class PagesController
您不应该在routes文件中执行此操作,最好在控制器过滤部分执行此操作。注意:验证用户身份代码>方法位于is_admin?之前?。否则,当前用户
将为零
class PagesController < ApplicationController
before_action :authenticate_user!
before_action :is_admin?, only: [:action1, :action2]
...
private
def is_admin?
unless current_user.is_admin?
flash.alert = "Sorry, you don't have permissions to perform this action."
redirect_to root_path
end
end
end
class PagesController
我建议您对与授权相关的所有内容使用gem和策略。我建议您对与授权相关的所有内容使用gem和策略。当用户不是另一个应用程序控制器
中的adminputis_admin?
时,我将未定义的方法“admin”用于nil:NillClass控制器,并添加检查用户是否已签名的条件。@ZehniKhairullah现在显示您的代码和问题的完整堆栈跟踪,以便我们进行检查。@anonymousxxx我没有检查编辑的答案,您必须添加默认的设计验证方法。如果用户不是ApplicationController
中的adminputis\u admin?
,则我会为nil:NillClass获取未定义的方法“admin”,以便在需要时在另一个控制器上使用,并添加检查用户是否已签名的条件。@ZehniKhairullah现在就在您的问题上显示您的代码和完整堆栈跟踪,以便我们进行检查。@anonymousxxx我没有检查编辑的答案,您必须添加默认的设计验证方法。若要消除未定义的方法错误,请将当前用户.admin
更改为当前用户。请尝试(:admin)
您的signed\u-in?
方法似乎没有检查当前\u用户的存在以消除未定义的方法错误将current\u-user.admin更改为current\u-user.try(:admin)
您的signed\u-in?
方法似乎没有检查当前\u用户的存在