Получение двух ошибок для присутствия пароля в activerecord - PullRequest
0 голосов
/ 26 января 2019

Я проверяю проверку ввода моего пользователя в приложении и получаю две ошибки в отношении наличия моего пароля.

Это то, что я написал для своей модели.

class User < ActiveRecord::Base
  include Slugifiable
  extend Slugifiable::Find

  has_secure_password
  has_many :posts

  validates :email, uniqueness: true, presence: true
  validates :username, uniqueness: true, presence: true
  validates :password, presence: true

end

Ниже моя таблица миграции:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email
      t.string :username
      t.string :password
      t.string :password_digest
    end
  end
end

Каждый раз, когда я запускаю свое приложение без ввода, оно должно выдавать мне три сообщения об ошибках: «Пароль не может быть пустым», «Электронная почта не может быть пустым», «Имя пользователя не может быть пустым». Вместо этого я получаю дополнительную ошибку «Пароль не может быть пустым». Я использую переменную password_digest, которая представляет собой соленый хеш пароля пользователя, когда данные сохраняются в базе данных.

1 Ответ

0 голосов
/ 26 января 2019

has_secure_password имеет собственную проверку присутствия в действии create.Поэтому проверка наличия password является излишней и приводит к тому, что вы получаете два сообщения об ошибке «Пароль не может быть пустым».

Просто удалите validates :password, presence: true или добавьте условие к проверке для определенногодействие контроллера / другой контекст ... т.е.

validates :password, presence: true, on: :some_action
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...