【问题标题】:Setting different config for scoped devise models为作用域设计模型设置不同的配置
【发布时间】:2020-01-13 14:12:02
【问题描述】:

在 Rails 应用程序中,基于devise 模型设置不同配置值的方法是什么? 假设我们有 2 个模型管理员和用户。在 devise.rb 中设置配置值将应用于所有模型。如何为其中一个模型设置不同的配置? 我试过这样

class Admin < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  self.allow_unconfirmed_access_for =0.days
end

但出现错误can't modify frozen class 我该如何解决这个问题。

谢谢!

【问题讨论】:

  • 错误消息看起来更具体到您的应用程序代码,而不是设计。我建议检查您是否故意在代码中的任何位置冻结 Admin 类。 注意:我尝试了同样的方法,但没有收到任何错误(虽然我没有尝试完整的功能)

标签: ruby-on-rails devise


【解决方案1】:

找到关于您的问题 here 的现有 StackOverflow 帖子。显然,您可以覆盖Admin 模型中的confirmation_required? 方法并返回false 以跳过管理员的确认步骤。请注意,它也会跳过发送Admin 的注册电子邮件。

更新:

self.allow_unconfirmed_access_for = ...Admin.allow_unconfirmed_access_for = ... 有效,但适用于旧设计版本。

对于最近的版本,它是Devise.allow_unconfirmed_access_for =...(我想这就是你要找的)

【讨论】:

    【解决方案2】:

    使 Admin 成为 User 类的继承者。然后已经为用户和管理员划定了访问权限

    【讨论】:

    • 你的建议不清楚。据我了解,您建议从用户模型继承。但是继承另一个模型的目的是什么?创建单独的设计模型的主要目标是彼此之间的逻辑分离(抽象)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2012-09-26
    相关资源
    最近更新 更多