- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Rails 4 应用程序中有 User
模型。它包含 account_type 的枚举
class User < ActiveRecord::Base
enum account_type: [manager: 0, contractor: 1, employee: 2]
end
目前 account_type
用于修改多个操作的行为。但在未来,我将需要引入几个属性,这些属性将针对不同的帐户类型具有不同的值(例如,某些 API 端点的速率限制或订阅价格)。
我该如何处理?
我可以添加新的模型 UserAccountType
模型并设置 belongs_to
-has_many
它和 User
模型之间的关联链接,但我将无法访问 manager?
等方法,这些方法由 ActiveRecord
方便地提供。此外,我还必须适本地为相关表设置种子,这意味着我必须在 seeds.rb
中放置映射“帐户类型”<--> 整数,并确保它为所有帐户类型创建记录也不干燥。有没有办法做得更好?
最佳答案
看起来您正在寻找一个简单的角色系统。 Rolify gem 非常适合:https://github.com/RolifyCommunity/rolify .在包含的内容之上添加其他便利方法也很容易。
已经有足够多的人尝试解决这个问题,以至于出现了一些模式。例如,您确定在项目生命周期内每个用户一个角色就足够了吗?您可能需要数组类型(或一对多)而不是枚举。
如果您想自己实现它,如果您使用的是 Postgres,则数组字段类型可能是存储和添加“角色”的好方法。至于方便的方法,你可以替换像 is_manager 这样的东西吗?在几行中。我不会因此而阻止您创建更合适、更可持续的数据模型。
例子:
def is_manager?
User.find(1).roles.include?('manager')
end
关于ruby-on-rails - 向 ActiveRecord 枚举字段添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456017/
我是一名优秀的程序员,十分优秀!