【问题标题】:rails-pundit does enum role: require a migration to create a new column?rails-pundit 确实枚举角色:需要迁移才能创建新列?
【发布时间】:2014-11-28 18:37:12
【问题描述】:

这是来自 Danile Kehoe 的回答:

“角色在 app/models/User.rb 文件(用户模型)中定义。

class User < ActiveRecord::Base
  .
 .
  .
  enum role: [:user, :vip, :admin]
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :user
  end

end

应用程序使用 ActiveRecord 枚举方法来管理角色。 ActiveRecord 提供了方便的查询角色属性的方法:

user.admin! # sets the role to "admin"
user.admin? # => true
user.role  # => "admin"

有关详细信息,请参阅 ActiveRecord::Enum 的文档。 ActiveRecord 枚举方法是 Rails 4.1 中的新方法。”

我的问题是,这是否需要运行迁移以将“:role”列添加到 User 表?我不知道权威人士如何/在哪里存储哈希,除非权威人士有一些自动的方式来做这件事。我的用户表(与这个不同的示例)是使用设计创建的,并且没有 :role 列。然而。我的直觉是添加一个,但我不想通过与 Pundit 引擎盖下的某些东西发生冲突来破坏应用程序。

【问题讨论】:

    标签: ruby-on-rails-4 activerecord enums


    【解决方案1】:

    是的,你是对的。如果您打算以这种方式使用它,则必须运行迁移并将角色添加到具有整数类型的用户模型:

    rails g migration AddRoleToUser role:integer
    

    方法set_default_role为新创建的用户设置默认角色:用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-13
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2016-03-06
      • 2019-12-08
      • 2014-10-04
      相关资源
      最近更新 更多