레일에있는 매개 변수에 대한 유효성을 검사하려고합니다. 이이 매개 변수가없는 경우 여기 레일 모델 유효성 검사 - 정의되지 않은 메서드 오류
는 클라이언트에서 보낸 샘플 매개 변수 목록 오류를 던져 레일 싶습니다 이상적으로User.rb
validates :terms_of_service, presence: true
validates :privacy_policy, presence: true
에 대한 코드입니다
Parameters: {"username"=>"f", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "confirm_success_url"=>"http://localhost:4000", "config_name"=>"default", "registration"=>{"username"=>"f", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "confirm_success_url"=>"http://localhost:4000"}}
그러나 레일이 아래 오류를 던졌습니다
NoMethodError (undefined method `terms_of_service' for #<User:0x007f16d402e788>):
실제로 매개 변수를 테스트 할 때 terms_of_service
메서드가 있어야한다고 생각하십니까? 이 비 열 속성 데 도움이
attr_accessor :terms_of_service
희망하더라도
'terms_of_service'는 Users 테이블의 열에 해당하는 매개 변수이고 ActiveModel은 값을 다시 검색하는 메소드를 만듭니다. 이것은 자동이며 거기에 없으면 열이 거기에 없을 수도 있습니다. 'db/schema.rb'를 게시하십시오. –
아하 나는 거기에 db에 해당 열이 있어야한다는 것을 알지 못한다. 필자는 사용자를 테이블에 저장하기 전에 두 매개 변수 (tos 및 privacy)가 true인지 확인하기를 원했습니다. 컬럼을 원한다면 모델 테이블에서 before_commit 훅을 사용하고 params가 존재하는지 확인해야한다고 가정합니다. – Kannaj
또는 terms_of_service를 attr_accessor로 만들 수 있습니다. –