我的 Rails 应用程序中有一些逻辑可以检查我的 current_user 变量的类类型:
logger.debug current_user.class # => Instructor
logger.debug current_user.class == Instructor # => true
case current_user.class
when Admin
logger.debug "Admin"
when Student
logger.debug "Student"
when Instructor
logger.debug "Instructor"
else
logger.debug "Guest"
end #=> "Guest"
尽管 Instructor
是类类型(如注释中所示),但 case 语句似乎总是评估 else 回退。有人可以解释为什么吗?只是为了提供一些背景知识,我正在使用 Devise 实现 STI 用户模型设置。
最佳答案
它是 case curent_user
而不是 current_user.class
。
您的 case
语句正在交叉检查属于 Object
的 current_user.class
类,它属于您的 case 语句。
其次,请注意您可以这样做,而不是 case
:
logger.debug current_user.class.name
关于ruby-on-rails - 评估类的案例陈述未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346324/