gpt4 book ai didi

ruby-on-rails - nil :NilClass 的 Rails 未定义方法错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:08 24 4
gpt4 key购买 nike

所以在我的 Rails 应用程序中,我有不同权限的用户。当有人登录时,一切正常。但是,当没有人登录时,我收到以下错误:

Undefined method 'editor?' for nil:NilClass

def require_editor
redirect_to '/error' unless current_user.editor? || current_user.admin?
end

我想我完全理解为什么会这样:因为没有人登录,Rails 试图弄清楚他们有什么角色,并且因为没有人没有登录,Rails 不知道它是否应该显示页面或不。

我的问题是:如何为未登录的人设置默认角色,并将他们发送到显示他们没有权限的错误页面?

最佳答案

我通常会这样做:

class ApplicationController

def current_user_or_guest
current_user || Guest.new
end

class Guest
def editor?
false
end

def admin?
false
end
end
end

那么简单

def require_editor
redirect_to '/error' unless current_user_or_guest.editor? || current_user_or_guest.admin?
end

这可以通过使用 CanCanCan 来简化并从 Controller 中提取授权逻辑。设置康康舞能力后, Controller 代码通常如下所示:

def require_editor
redirect_to '/error' unless can?(:edit, MyThing)
end

关于ruby-on-rails - nil :NilClass 的 Rails 未定义方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46077759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com