gpt4 book ai didi

ruby-on-rails - 向 ActiveRecord 枚举字段添加属性

转载 作者:行者123 更新时间:2023-12-03 22:40:02 24 4
gpt4 key购买 nike

我的 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/

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