Ruby on rails 3 保存到数据库时的Rails nil值
我试图在rails内部实现一个用户身份验证系统,这是我的模型:Ruby on rails 3 保存到数据库时的Rails nil值,ruby-on-rails-3,authentication,Ruby On Rails 3,Authentication,我试图在rails内部实现一个用户身份验证系统,这是我的模型: class User < ActiveRecord::Base attr_accessible :id, :email, :name, :password, :created_at, :updated_at has_secure_password before_save { email.downcase! } validates :email, presence: true, :uniqueness =&
class User < ActiveRecord::Base
attr_accessible :id, :email, :name, :password, :created_at, :updated_at
has_secure_password
before_save { email.downcase! }
validates :email, presence: true, :uniqueness => { :case_senstive => false }
validates :name, presence: true
validates :password, presence: true, length: { minimum: 6 }
end
在其上运行valid
将返回true
,但在保存记录时,我收到错误:
users.password may not be NULL
从散列
中提取密码可以正常工作
有什么问题
谢谢您在哪里设置:password\u confirmation
?文档中的示例表明您需要它
主要问题在于是否有安全的密码。如果您使用的是字符串字段:password\u digest
(这是保存加密密码的地方)。您还需要删除字段:密码,以及您的状态验证程序。在添加gem'bcrypt-ruby'之后,“~>3.0.0”
。
现在这应该行了
user = User.new(:name => "A", :email => "a@a.a",
:password => "password", :password_confirmation => "password")
但最好使用伟大的宝石。它有你需要的一切
新增
您应该有attr\u accessible
用于:password\u confirmation
,并且该字段应在表单中使用
我认为在最新版本中,:密码确认
是可选的。该字段是必填字段。但如果您的表单中不需要它,您可以在保存之前在控制器中设置该字段:user.password\u confirmation=user.password
i已安装password\u digest
和bcrypt
gem。我不能在这个项目中使用Desive
user = User.new(:name => "A", :email => "a@a.a",
:password => "password", :password_confirmation => "password")