한 가지 방법에 대한 일부 필드와 다른 방법에 대한 모든 필드의 유효성을 검사해야하는 상황이 있습니다.ActiveModel에 대한 조건부 유효성 검사
class User < ActiveInteraction::Base
def initialize
full_validation = true
end
# All user related auth data
string :email
string :password
string :name
string :surname
string :phone
@error
@full_validation
attr_accessor :error, :full_validation
# Validation rules
validates :email,
presence: true,
format: {
with: /^[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/,
:multiline => true
}
validates :password, presence: true, length: { minimum: 6 }
validates :name, presence: true,
format: {
with: /^[a-zA-Z\d\s]*$/,
:multiline => true
}, :if => :full_validation?
validates :surname, presence: true,
format: {
with: /^[a-zA-Z\d\s]*$/,
:multiline => true
}, :if => :full_validation?
validates :phone, presence: true, :if => :full_validation?
내가 user = User.new
를 호출하고 user.full_validation = false
만 이메일과 비밀번호 필드를 호출하는 경우 그러나 검증은 if 이름, 성을위한 검증에서 진술되어야한다 :
이 내 모델 순간에 모습입니다 전화가이를 완전히 무시하고 유효성 검사 오류를 반환합니다.
def isFullValidation
full_validation == true
end
가 나는 또한 if: :full_validation? do .. end
문에서 3 개 유효성 검사 규칙을 with_options를 사용하여 포장 시도 :
는 또한 몇 가지 다른 접근 방식을 모든 작업 (오류없이)하지만 여전히 검증 모든 필드를 시도했다.
그룹화 사용해보십시오? – Stefan
@Stefan 나는 시도 : full_validation 중 하나를 작동하지 않았다. 오류 또는 예외는 성, 이름 및 전화 필드의 유효성 검사를 건너 뛰지 않습니다. –
그것은 매우 이상합니다. 정의되지 않은 메서드를 호출하면 예외가 발생합니다. – Stefan