【发布时间】:2013-11-04 04:04:35
【问题描述】:
我正在尝试通过 Ruby on Rails 4.0 学习和使用我自己的用户模型和身份验证,但大多数教程(如果不是全部)似乎在最近的更新中已经过时。它们中的任何一个都没有描述的方法有效。我完全一无所知,这是我的用户模型:
class User
include Mongoid::Document
field :login, type: String
field :hash, type: String
field :salt, type: String
field :email, type: String
field :name, type: String
before_save :hash_password
validate :login, presence: true, uniqueness: true, length: { in: 4..24 }
validate :password, presence: true, confirmation: true, length: { in: 8..32 }
validate :email, presence: true
validate :name, presence: true
def hash_password
if password.present?
self.salt = BCrypt::Engine.generate_salt
self.hash = BCrypt::Engine.hash_secret(password, salt)
end
end
end
还有控制器:
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
redirect_to @user
else
render 'new'
end
end
def new
@user = User.new
end
private
def user_params
params.require(:user).permit(:login, :password, :password_confirmation, :email, :name)
end
end
然后我在保存用户时收到UnknownAttribute 错误。我错过了什么?哪些字段有误?
【问题讨论】:
-
使用
has_secure_password并完成它...... -
@meagar 有什么好的攻略吗?我是 Ruby 和 Rails 的新手。此外,如果需要,Mongo 不使用 ActiveRecord。
-
它是否试图将明文
password保存到数据库中? -
@micahbf 它根本不起作用,我得到它来保存明文密码,但我之前无法让它散列。
-
@ranisalt 你能发布整个错误吗?
标签: ruby-on-rails ruby ruby-on-rails-4 mongoid authentication