Rails 4枚举 - 如何测试平等?

时间:2014-05-08 10:54:31

标签: ruby-on-rails ruby-on-rails-4 enums

我正在使用Rails 4.1和Ruby 2.1.1

我的用户模型中有一行:

enum role: [:user, :admin, :team_admin, :domain_admin, :super_admin]

在我的控制器中,我想只做一些事情,如果我的用户是:domain_admin并且我使用以下测试:

if @user.role == :domain_admin

@user.role(在控制台中)返回:domain_admin时,测试返回false。所以价值设置得当,但我必须误解测试它的平等性,或者枚举不能像我以前想的那样工作。我从阅读文档中假设它们是一个薄层(小)整数。

有人能告诉我如何测试:domain_admin的相等性,以及如何测试>= :domain_admin

非常感谢。

1 个答案:

答案 0 :(得分:6)

@user.domain_admin? # return true if :domain_admin

代替:

@user.role == :domain_admin

使用:

@user.role == "domain_admin"

一些测试:

=> 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