【학습 출력 3】 has_secure_password와 validates :password, presence: true의 차이

1355 단어 루비RailsValidation

배경



has_secure_password를 설정한 User 모델

user.rb
class User < ApplicationRecord
  has_secure_password

그러나 다음 테스트

user_controller_test.rb
test "password should be exist when create" do
  @user.password = " "
  assert_not @user.valid?
end

에 걸려 버리는 문제에 고민하고 있었습니다.
(has_secure_password가 공백에 유효성이 있다고 생각했기 때문에 htps : // 코 m / 짱짱 - Y / ms / 19 에아 23b81f3421063fc5)

validates :password, presence: true를 붙이면 테스트를 통과합니다.
그럼, has_secure_password의 디폴트 validation과는 일체...

결론



Rails 4.2부터 다음과 같이 변경되었습니다.

has_secure_password 는 기본적으로 빈 암호를 허용합니다(예: 빈 공간 전용 암호). h tps : // / ls lgus s. jp / 4_2_repease_의 s. HTML

공백을 허가하고 싶지 않은 경우는 별도 validates :password, presence: true 등의 추가가 필요합니다.

좋은 웹페이지 즐겨찾기