我是RoR的新手,我正在尝试创建一个像reddit这样的简单板,但是没有用户帐户。
我希望帖子的作者可以使用密码更新他的帖子。
实际上,我只是遵循了bcrypt gems的github上的代码
商品模型
require 'bcrypt'
class Article < ActiveRecord::Base
# users.password_hash in the database is a :string
include BCrypt
def password
@password ||= Password.new(password_hash)
end
def password=(new_password)
@password = Password.create(new_password)
self.password_hash = @password
end
end
商品控制器
def create
@article = Article.new(params[:article])
@article.password = params[:password]
@article.save!
end
现在我正在尝试像他们的登录名一样进行编辑
def edit
@article = Article.find(params[:id])
if @article.password == params[:password]
render 'edit'
else
redirect_to @article
end
end
但是它将数据库中的哈希与用户输入的字符串进行了比较,但是当您在rails中使用==
时,我在某处读取了它通过字符串或类似方式更改哈希的情况。
我发现了使用方法authenticate
的其他解决方案,但这对我来说实在太多了,我只想检查密码是否匹配。
抱歉,我的问题听起来很愚蠢。
我正在使用Rails 5
答案 0 :(得分:0)
在您的编辑操作中,您应该使用此
BCrypt::Password.new(@article.password) == params[:password]