중첩 필드의 값을 합한 유효성 검사를 수행하여 100 %인지 확인하고 싶습니다. 따라서 부모 모델에서 유효성 검사를 수행하고 self.errors.add
을 수행하고 유효성 검사가 실패하면 오류를 추가합니다. 문제는, 내가 알고있는 한, errors.add
은 일부 속성을 인수로 기대하지만 부모 모델의 어떤 속성과도 관련이 없으므로 양식의 맨 위에 해당 메시지를 표시하고 싶습니다. 내가 어떻게 그 일을 할 수 있는지에 대한 아이디어는? 고맙습니다!레일 단순 양식 - 속성과 관련없는 오류 추가
UPDATE :
이 내가 확인 싶어 내 상위 모델이다. 양식은 그것이 내가 테스트를 해요 하나있는 방법을 만들어 내 :arrendamento_contrato_unidades.
class ArrendamentoContrato < ApplicationRecord
has_many :arrendamento_contrato_unidades, dependent: :destroy
validate :check_total_percentual_credito
def check_total_percentual_credito
if arrendamento_contrato_unidades.sum(&:percentual_credito).to_f != 100.0
self.errors.add :base, "Tem que ser 100%"
end
end
end
에 대한 필드를 내포하고있다 : --- 또한
def create
@arrendamento_contrato = ArrendamentoContrato.new(arrendamento_contrato_params)
respond_to do |format|
if @arrendamento_contrato.save
format.html {
flash[:notice] = flash_notice
redirect_to action: "index"
}
format.json { render json: {status: 1, redirect: arrendamento_contratos_url} }
else
format.html { render :new }
format.json { render json: {status: 0, errors: @arrendamento_contrato.errors, status: :unprocessable_entity} }
end
end
end
을, 나는 양식에 내 object.errors.full_messages 디버깅 , 오류가 있습니다. 그것은 단지 보이지 않고있다!
내가 찾고있는베이스에 오류가 추가되었다고 생각합니다. 하지만 지금은 내 메시지를 표시하지 않지만 유효성 오류가 있습니다. 내 양식 코드 : 내가 그것을 작동합니다 생각
= simple_form_for(@arrendamento_contrato, validate: true, html: { id:"dropzoneForm", class: "dropzone dz-clickable"}) do |f|
= f.error_notification
.form-inputs
.row
.col-md-6
= f.input :numero
.col-md-6
= f.association :usina, input_html: {class: "chosen-select"}
.hr-line-dashed
.row
.col-md-6
= f.association :esco_contrato, input_html: {class: "chosen-select"}
.col-md-6
= f.association :om_contrato, input_html: {class: "chosen-select"}
.hr-line-dashed
.row
.col-md-4
= f.input :data_inicio, as: :string, input_html: {"data-mask" => "date"}
.col-md-4
= f.input :data_fim, as: :string, input_html: {"data-mask" => "date"}
.col-md-4
= f.input :valor_mensal, as: :string, input_html: {"data-mask" => "decimal"}
.hr-line-dashed
#arrendamento_contratos_unidades
- if [email protected]_contrato.arrendamento_contrato_unidades || @arrendamento_contrato.arrendamento_contrato_unidades.empty?
h3 = I18n.t('activerecord.models.unidade_consumidora.other')
i
'Aguardando ESCO...
- else
.row
.col-md-6
label class='control-label'
= I18n.t('activerecord.models.unidade_consumidora.other')
.col-md-6
label class='control-label'
= I18n.t('activerecord.attributes.arrendamento_contrato_unidade.percentual_credito')
.hr-line-dashed
.blockquote
= f.simple_fields_for :arrendamento_contrato_unidades do |f|
= render 'arrendamento_contrato_unidade_fields', f: f
.hr-line-dashed
무슨 뜻인지 코드 예를 게시 할 수 있습니까? 두 모델이 있고 자식 모델과 많은 관계가있는 부모 모델에서 자식 모델의 합계를 확인하려고한다고 가정합니다. 이게 옳은 거니? –
@CdotStrifeVII 바로 그 것입니다! 몇 분의 코드로 게시물을 업데이트하고 싶습니다. –