【问题标题】:How do I get devise 2.2.3 to accept auto-geneated password for rails 3.2.13 app如何让设备 2.2.3 接受 rails 3.2.13 应用程序的自动生成密码
【发布时间】:2013-04-24 15:30:50
【问题描述】:

我正在尝试创建一个 rails 3.2.13 应用程序,在该应用程序中创建用户时会自动为该用户生成密码。现在我正在使用 before_validate 生成密码并将其分配给用户对象上的密码和密码确认字段,然后再创建,但设计仍然抱怨密码仍然为空。

设计接受我为用户对象生成的密码的最佳方法是什么?如果可能的话,如果能够做到这一点而不必覆盖内部验证,那就太好了。

【问题讨论】:

    标签: devise ruby-on-rails-3.2


    【解决方案1】:

    我不知道你做错了什么...在这里快速尝试,结果一切正常。

    这是我的模型

    class User < ActiveRecord::Base
      devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :trackable, :validatable
      attr_accessible :email, :password, :password_confirmation, :remember_me
    
      before_validation :set_user_password
    
      def set_user_password
        @password = Devise.friendly_token
      end 
    end
    

    我什至不必设置 password_confirmation 只是密码,它在 Rails 控制台上保存而没有错误。

    【讨论】:

    • 我将不得不查看 Devise.friendly_token 的作用。如果我真的粘贴了我的代码,它也会有所帮助。对于那个很抱歉。在我再次查看我的代码之后,我确实发现了一个问题,我可以看到问题所在。问题是我调用的是 before_validate 而不是 before_validation。一旦我进行了测试,一切都通过了。非常有趣的是,您所要做的就是设置一个 @password 变量。这是一种更清洁的方法。
    • 我不知道为什么我不能通过回车来换行。对不起,很长一段。
    【解决方案2】:

    以前的解决方案很棒。但是您不能重设密码。 set_user_password 应该只在创建帐户时执行。

    before_validation :set_user_password, :on => :create
    def set_user_password
        @password = Devise.friendly_token
    end
    

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      相关资源
      最近更新 更多