Я новичок в RoR и пытаюсь создать простую доску, такую как reddit, но без учетной записи пользователя.
Я хочу, чтобы автор поста мог обновить свой пост паролем.
На самом деле я просто следовал коду на github bcrypt gems
Артикул модель
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
Но он сравнивает мой хеш в базе данных со строкой, введенной пользователем, но я где-то читал, когда вы используете ==
в рельсах, это меняет хеш на строку или что-то в этом роде.
Я нашел другое решение с помощью метода authenticate
, но это слишком много для моего использования, я просто хочу проверить, совпадает ли пароль.
Извините, если мой вопрос звучит глупо.
Я использую Rails 5