Noz*_*Noz 2 ruby logic ruby-on-rails switch-statement devise
我的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"
Run Code Online (Sandbox Code Playgroud)
尽管Instructor是类类型(如注释中所示),但似乎case语句总是评估else的后退.有人可以解释一下原因吗?为了给出一点背景知识,我正在使用Devise实现STI用户模型设置.
事实case curent_user并非如此current_user.class.
您的case陈述是交叉检查current_user.class哪个类Object属于您的案例陈述.
其次,请注意,而不是case你可以做到的:
logger.debug current_user.class.name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1822 次 |
| 最近记录: |