我正在尝试创建一个 rails 3.2.13 应用程序,在该应用程序中创建用户时会为该用户自动生成密码。现在,我正在使用 before_validate 生成密码并将其分配给用户对象上的密码和密码确认字段,然后再创建,但设计仍然抱怨密码仍然为空。
设计接受我为用户对象生成的密码的最佳方法是什么?如果可能的话,如果能够做到这一点而不必覆盖内部验证,那就太好了。
我正在尝试创建一个 rails 3.2.13 应用程序,在该应用程序中创建用户时会为该用户自动生成密码。现在,我正在使用 before_validate 生成密码并将其分配给用户对象上的密码和密码确认字段,然后再创建,但设计仍然抱怨密码仍然为空。
设计接受我为用户对象生成的密码的最佳方法是什么?如果可能的话,如果能够做到这一点而不必覆盖内部验证,那就太好了。
I don't known what you are doing wrong... Tried quickly here and everything turned out ok.
Here is my model
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
I didn't even had to set password_confirmation just password and it saved without errors at the rails console.
以前的解决方案很棒。但是您不能重设密码。set_user_password 应该只在创建帐户时执行。
before_validation :set_user_password, :on => :create
def set_user_password
@password = Devise.friendly_token
end