【问题标题】:How to change the confirmable to be optional in devise?如何在设计中将可确认更改为可选?
【发布时间】:2012-11-23 12:55:43
【问题描述】:

我已经设计了身份验证,并且我有confirmable 用于用户模型的设计,但我希望根据我发送的数据这是可选的。也就是说,用户模型中有一个type field,如果我发送value 1 作为类型,则应存在可确认信息,如果value is 2 则不应存在可确认信息,并且该帐户应自动激活。我怎样才能做到这一点?请帮我。提前致谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise-confirmable


    【解决方案1】:

    您可以在 config/initializers/devise.rb 文件中设置 config.allow_unconfirmed_access_for = nil

    感谢Ajedi32 的问题 - https://github.com/plataformatec/devise/issues/2275

    【讨论】:

      【解决方案2】:

      你可以在你的用户模型中做这样的事情。

      before_save :confirm_user, on: :create
      
      def confirm_user
        self.confirm! if field.eql?("value_1")
      end
      

      诀窍是您检查您的值,如果您想在不确认的情况下创建用户,那么您只需使用 devise confirm! 方法手动确认它。

      【讨论】:

      • 谢谢。你能详细解释一下吗。我的用户模型中有“设计:可确认”。这个方法怎么限制可确认的
      • confirm! 方法通过将confirmed_at 字段设置为实际时间来确认用户。如果用户已被确认,请在电子邮件字段中添加错误。
      • 我用过这样的 before_save :skip_confirmation!, :on => :create def skip_confirmation! self.confirmed_at = Time.now 如果 type == "value 2" end 它不会向用户发送邮件如果 type == "value 2" 但如果 value 为 1 它显示错误为未定义的方法 `confirmation_url' for #:0x000001038ce4f8>。我该怎么办?
      【解决方案3】:

      我认为你可以使用skip_confirmation!方法在这里。所以它不会为用户发送确认邮件,并且会被确认。

      before_save :require_confirmation, :on => :create
      
      def require_confirmation
         self.skip_confirmation! if field == "value_2"
      end
      

      【讨论】:

      • 如果我发送值 2,那么它会跳过确认并让用户登录,但如果值为 1,那么它会将错误显示为未定义的方法 `confirmation_url' for #:0x000001038ce4f8 > 并且未创建用户。如果 value = 1,它应该发送电子邮件,我该怎么办?
      • 我认为.. 这似乎设计了与 scoped_views 相关的错误。只需备份您的项目并尝试此步骤 1:只需在“config/initializers/devise.rb”中设置“config.scoped_views = true”即可。第 2 步:然后使用“rails generate devise:views users”生成范围视图。
      • 非常感谢。它现在可以工作了,但请告诉我你为什么要进行这些更改。
      • 我对 devise gem 了解不多。但我认为设计默认范围视图存在一些设计路由问题。我几乎有同样的问题。我尝试了这些步骤,它解决了我的问题。您可以在github.com/plataformatec/devise#configuring-views 上找到更多信息
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      相关资源
      最近更新 更多