Я создаю приложение блога в rails.
Версия Ruby -> 2.5.1 Версия Rails -> 5.1.7
У меня есть модель пользователя, в которой я проверяю парольи это подтверждение должно совпадать.
validates :password, presence: true, length: {minimum: 6, maximum: 20}
validates :password, confirmation: {case_sensitive: true , message: "Passwords don't match"}
Теперь, когда я отправляю форму с другим паролем и ее подтверждение, в верхней части отображается сообщение об ошибке:
2 errors found.
Password confirmation Passwords don't match
Password confirmation doesn't match Password
И чтоЯ ожидал:
1 error found.
Passwords don't match
Это код вида формы, если требуется:
#The errors partial is just iterating over the user object errors and displaying them.
<%= render 'shared/errors', obj: @user %>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :password %>
</div>
<div class="col-sm-8">
<%= f.password_field :password, class: "form-control", placeholder: "Enter password" %>
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :password_confirmation, 'Confirm Password' %>
</div>
<div class="col-sm-8">
<%= f.password_field :password_confirmation, class: "form-control", placeholder: "Enter password again" %>
</div>
</div>
Обновленная модель пользователя:
class User < ActiveRecord::Base
has_many :articles
validates :username, presence: true, uniqueness: {case_sensitive: false},
length: {minimum: 3, maximum: 25}
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 105 },
uniqueness: { case_sensitive: false },
format: { with: VALID_EMAIL_REGEX }
validates :password, presence: true, length: {minimum: 6, maximum: 20}
validate :password_check
before_save { self.email = email.downcase }
has_secure_password
private
def password_check
# Check for nils and blanks
errors.add(:base, "Passwords don't match") if password != password_confirmation
end
end