gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:35:19 25 4
gpt4 key购买 nike

我正在使用 Rails 4.1 和 Ruby 2.1.1

我的用户模型中有一行:

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

在我的 Controller 中,如果我的用户是 :domain_admin,我只想做一些事情我使用以下测试:
if @user.role == :domain_admin

@user.role 时测试返回 false (在控制台中)返回 :domain_admin .所以该值设置正确,但我一定是误解了它的测试相等性,或者枚举不像我以前认为的那样工作。我从阅读文档中假设它们是(小)整数上的薄层。

谁能告诉我我如何测试 :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

关于ruby-on-rails - Rails 4 枚举 - 如何测试相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com