patient
모델이 있습니다. patient
을 등록하려고하면 그는 필드를 채 웁니다 (예 : name
, email
, telephone
).이 필드에는 유효성 확인 presence
이 있습니다. 또한 의사가 자신을 위해 환자를 추가 할 수있는 또 다른 양식이 있습니다.이 양식에는 필드가 하나만 있습니다. name
.일부 필드의 유효성 검사 건너 뛰기
질문 : 어떻게 든 필드 email
및 telephone
에 검증을 생략하지만 name
에 검증을 남길 수 있습니다?
, 나는이 작업이 있습니다
def add_doctor_patient
@patient = @doctor.patients.new(patient_params)
if params[:patient][:name].present? and @patient.save(validate: false)
redirect_to doctor_patients_path(@doctor), notice: 'Added new patient.'
else
render action: 'new'
end
end
name
가 PARAMS에서 나는 검증을 생략하고 환자를 저장하지만, name
가 존재하지 않을 때, 그것은 그냥 오류와 new
조치를 렌더링 존재 , simple_form은 붉은 색으로 필드를 표시하지 않습니다. 어쩌면 오류를 제기 할 수있는 방법이 있을까요 아니면 다른 솔루션일까요?
UPD
솔루션 다음 wintermeyer 응답 다음과 같습니다. 내가 patient
belongs_to: doctor
이라는 관계를 가지고 있으므로, hidden_field_tag :doctor_id, value: @doctor.id
을 사용할 수 있으며, 사람들이 말한 것처럼 확인하십시오 : unless: ->(patient){patient.doctor_id.present?}
. P. 누군가가 고안을 사용하는 경우 email
및 password
에 필요한 유효성 검사를 건너 뜁니다. 우리는이 같은, 내 경우 Patient
에, 모델 뭔가를 추가 할 수 있습니다
validates :name, presence: true
validates :email, presence: true, unless: ->(patient){patient.name.present?}
주어진 문제에 대한 해결책이 아닙니다. 'name'은 언제든지 확인되어야합니다. – wintermeyer
이 코드를 사용하면'name'도 유효성이 검사되고'name'이 없다면'email'의 존재는 require입니다. 나는 name에 대한 유효성 검사를 추가했다. – BriceB
이름이 존재할 경우 등록 양식의 유효성 검사를 건너 뜁니다. – yozzz