gpt4 book ai didi

ruby-on-rails - Rails 枚举类型或替代方案

转载 作者:行者123 更新时间:2023-12-03 10:23:26 24 4
gpt4 key购买 nike

我只是在 Rails 上学习 ruby​​,我有一个用户角色表(所有者、管理员和用户)。代码中会有一些地方需要检查用户的角色并显示不同的选项。有谁知道如何在不诉诸魔术数字或其他丑陋方法的情况下做到这一点?

在 ASP.Net 网络应用程序中,我已经通过使用枚举类型看到了这一点:

public enum UserRole { Owner = 1, Admin = 2, User = 3 }

// ...

if (user.Role == UserRole.Admin)
// Show special admin options

数据库中的每个不同角色都反射(reflect)为一个枚举类型,其值设置为数据库中该角色的 ID。这似乎不是一个很好的解决方案,因为它取决于可能会更改的数据库知识。即使这是处理此类事情的正确方法,我也不知道如何在 rails 中使用枚举类型。

我将不胜感激对此问题的任何见解。

最佳答案

Ruby 本身没有枚举类型,但是这个站点显示了一个方法 http://www.rubyfleebie.com/enumerations-and-ruby/

你可以在你的 User 模型中做这样的事情:

#constants
OWNER = 1
ADMIN = 2
USER = 3

def is_owner?
self.role == OWNER
end

def is_admin?
self.role == ADMIN
end

def is_user?
self.role == USER
end

关于ruby-on-rails - Rails 枚举类型或替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/908906/

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