我的 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 用户模型设置。