我正在尝试创建rails 3.2.13 app,在创建用户时,会自动为该用户生成密码。现在我正在使用before_validate来生成密码并将密码分配给用户对象上的密码和password_confirmation字段,然后设计仍然会抱怨密码仍为空白。
获取设计接受我为用户对象生成的密码的最佳方法是什么?如果可能的话,不必覆盖内部验证就可以做到这一点。
答案 0 :(得分:0)
我不知道你做错了什么......快点在这里尝试,一切都很好。
这是我的模特
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控制台上保存没有错误。
答案 1 :(得分:-1)
之前的解决方案非常棒。但是您无法重置密码。 set_user_password只应在创建帐户时执行。
before_validation :set_user_password, :on => :create
def set_user_password
@password = Devise.friendly_token
end