加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 4枚举 – 如何测试相等性?

发布时间:2020-12-17 03:23:51 所属栏目:百科 来源:网络整理
导读:我使用的是Rails 4.1和 Ruby 2.1.1 我的用户模型中有一行: enum role: [:user,:admin,:team_admin,:domain_admin,:super_admin] 在我的控制器中,我想只做一些事情,如果我的用户是:domain_admin并且我使用以下测试: if @user.role == :domain_admin 当@ us
我使用的是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?

非常感谢.

解决方法

@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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读