[RUBY-ON-RAILS] 유효성 수용은 항상 실패
RUBY-ON-RAILS유효성 수용은 항상 실패
나는 내가 부족 무엇을 볼 수는 없지만, 뭔가 분명 옳지 않다.
모델에서 :
validates :terms, :acceptance => true, :on => :update
몇 가지 옵션을 시도 :
>> a = Factory(:blog_agreement)
=> #<BlogAgreement id: 54, terms: false, created_at: "2011-01-20 11:33:03", updated_at: "2011-01-20 11:33:03", accept_code: "fa27698206bb15a6fba41857f12841c363c0e291", user_id: 874>
>> a.terms
=> false
>> a.terms = true
=> true
>> a.save
=> false
>> a.terms = "1"
=> "1"
>> a.save
=> false
>> a.terms = 1
=> 1
>> a.save
=> false
>> a.errors.full_messages
=> ["Terms must be accepted"]
해결법
-
==============================
1.그래서 문제가 테이블의 실제 항목 같은 용어를 갖는 것을 밝혀. 일반적 validates_acceptance_of에서는 그 검증의 속성 접근과 사용을 정의하는 경우에 이러한 열없이 사용된다.
그래서 문제가 테이블의 실제 항목 같은 용어를 갖는 것을 밝혀. 일반적 validates_acceptance_of에서는 그 검증의 속성 접근과 사용을 정의하는 경우에 이러한 열없이 사용된다.
같은 옵션을 수락 : 작업에 validates_acceptance_of 위해서는이 통과 할 필요가 실제 테이블 컬럼에 매핑 할 때 :
validates :terms, :acceptance => {:accept => true}
그 이유는 액티브 레코드에서 타입 캐스팅과 관련이있다. 명명 된 속성이 실제로 존재하는 경우, AR의 수행은 데이터베이스 열 유형에 따라 타입 캐스팅. 대부분의 경우 수용 열은 부울로 정의 model_object.terms이 true 또는 false를 돌려줍니다 그렇게 될 것입니다.
때 이러한 열 attr_accessor가 없습니다 : 용어는 단순히 일반적으로 체크 박스 필드에서 "1"이 될 것입니다 PARAMS 해시에서 모델 객체에 전달 된 값을 반환합니다.
-
==============================
2.사람의 경우는 유증과 나 같은 동일한 문제를 가지고, 나는이 대답을 추가 :
사람의 경우는 유증과 나 같은 동일한 문제를 가지고, 나는이 대답을 추가 :
나는 고안의 등록 양식에 추가 :
sign_up.html.erb
<%= f.check_box :terms_of_service %>
user.rb
validates, :terms_of_service, acceptance: true
내 configured_permitted_parameters 내부 TERMS_OF_SERVICE 및 유증 체크 박스 상태를 무시 : 내가 추가하는 것을 잊었다.
application_controller.rb
before_filter :configure_permitted_parameters, if: :devise_controller? def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :terms_of_service)} end
configure_permitted_parameters 방법은 그가 이메일과 비밀번호의 추가 저장해야 PARAMS 무엇인지에 대한 유증에 의해 사용된다.
-
==============================
3.나는이 형식을 사용했다 :
나는이 형식을 사용했다 :
validates :accpeted_terms, :acceptance => {:accept => true}
-
==============================
4.
validates_acceptance_of :terms, :accept => true
-
==============================
5.나는 유효성에 대한 수용 위의 Candland의 대답은 레일 3.1 올바른 것으로 판명. 이것은 내가 데이터베이스에 대한 승인을 기록하는 내 레일 3.1.3 응용 프로그램을 설정하는 방법입니다.
나는 유효성에 대한 수용 위의 Candland의 대답은 레일 3.1 올바른 것으로 판명. 이것은 내가 데이터베이스에 대한 승인을 기록하는 내 레일 3.1.3 응용 프로그램을 설정하는 방법입니다.
마이그레이션에서,
class AddTermsToAccount < ActiveRecord::Migration def change add_column :accounts, :terms_of_service, :boolean, :default => false end end
이 모델에서,
attr_accessible :terms_of_service validates :terms_of_service, :acceptance => {:accept => true}
의 형태의,
<%= f.check_box :terms_of_service %> <%= f.label :terms_of_service %>
-
==============================
6.나는 각도 JS에서이 시도하고 진정한 가치 만 레일 4. 각도 전송 매개 변수가 true 인식하지 않았다 레일있다.
나는 각도 JS에서이 시도하고 진정한 가치 만 레일 4. 각도 전송 매개 변수가 true 인식하지 않았다 레일있다.
그래서, 나는이로 변경 :
class Person < ActiveRecord::Base validates :terms_of_service, acceptance: { accept: true } end
당신이있는 경우 기본 매개 변수가 1 또는 0에 한번이 작업을 수행 할 수 있습니다 :
class Person < ActiveRecord::Base validates :terms_of_service, acceptance: true end
이것은 더 문서입니다. 합격 확인. 나는이 도움을 바랍니다.
-
==============================
7.유효성 검사가 아니라 의도 된 실패 귀하의 후속 호출이 실제로 업데이트에 저장할 수 있도록 공장에 대한 호출은 레코드를 작성합니다. 공장없이 그것을 시도하고 그것을 작동합니다.
유효성 검사가 아니라 의도 된 실패 귀하의 후속 호출이 실제로 업데이트에 저장할 수 있도록 공장에 대한 호출은 레코드를 작성합니다. 공장없이 그것을 시도하고 그것을 작동합니다.
-
==============================
8.당신은 당신의보기에서 기본 체크 박스, 등이있는 경우
당신은 당신의보기에서 기본 체크 박스, 등이있는 경우
<%= builder.check_box :agreement %>
당신의 모델이 줄을 넣어
validates :agreement, :acceptance => true
이는이 CHECK_BOX보기 도우미에 의해 생성 된 기본 "1"을 사용
from https://stackoverflow.com/questions/4746710/validates-acceptance-always-failing by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 개발은 4 레일에 ActionMailer 메일을 발송하지 (0) | 2020.03.02 |
---|---|
[RUBY-ON-RAILS] 어떻게 레일 응용 프로그램에서 경쟁 조건을 피할 수 있습니까? (0) | 2020.03.02 |
[RUBY-ON-RAILS] 액티브가 포함되어 있습니다. 포함 된 열을 지정합니다 (0) | 2020.03.02 |
[RUBY-ON-RAILS] 정의되지 않은 방법 attr_accessible (0) | 2020.03.02 |
[RUBY-ON-RAILS] 번역이없는 경우 기본 언어로 다시 가을 (0) | 2020.03.02 |