ten*_*mes 6 enums ruby-on-rails ruby-on-rails-4
我使用的是Rails 4.1和Ruby 2.1.1
我的用户模型中有一行:
enum role: [:user, :admin, :team_admin, :domain_admin, :super_admin]
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我想只做一些事情,如果我的用户是a :domain_admin
,我使用以下测试:
if @user.role == :domain_admin
Run Code Online (Sandbox Code Playgroud)
当@user.role
(在控制台中)返回时,测试返回false :domain_admin
.所以价值设置得当,但我必须误解测试它的平等性,或者枚举不像我以前想的那样工作.我从阅读文档中假设它们是(小)整数的薄层.
谁能告诉我如何测试相等性:domain_admin
,以及我该如何测试>= :domain_admin
?
非常感谢.
@user.domain_admin? # return true if :domain_admin
Run Code Online (Sandbox Code Playgroud)
代替:
@user.role == :domain_admin
Run Code Online (Sandbox Code Playgroud)
使用:
@user.role == "domain_admin"
Run Code Online (Sandbox Code Playgroud)
一些测试:
=> User.roles
=> {"user"=>0, "staff"=>1, "admin"=>2}
=> u = User.last
=> u.role
=> "user"
=> u.role == "user" # <-- this
=> true
=> User.roles.each_pair { |x, _| puts u.role == x }
=> true
=> false
=> false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2248 次 |
最近记录: |