我通常使用current_user
确定所有内容例如:
@integrations = current_user.integrations.all
对于故障排除,我希望管理员能够看到所有用户的所有内容。我目前在用户模型上有一个admin: true
为了让管理员看到一切,我一直这样做:
def index
if current_user.admin?
@integrations = Integration.all.includes(:user)
@reports = Report.all
else
@integrations = current_user.integrations
@reports = current_user.reports
end
end
我觉得有一种更简单的方法......建议?
谢谢!
答案 0 :(得分:0)
您可以将管理员检查抽象为用户控制器中的受保护/私有方法:
def is_admin
current_user.admin?
end
然后在控制器的顶部,放置一个先行动来捕捉你想要的任何方法:
class UsersController < ApplicationController
before_action :is_admin, only: [:index, :show]
# rest of your code
end
OR
class UsersController < ApplicationController
before_action :is_admin, except: [:destroy]
# rest of your code
end
答案 1 :(得分:0)
您可以在application_controller.rb文件中创建受保护的方法。如上所述,它将检查current_user是否为admin。然后,您可以使用条件语句来设置权限。
假设admin是布尔值
def is_admin?
current_user.admin == true
end
在视图中,您可以说
if current_user.is_admin?
........
end