유효성 검사가 완료되면 중첩 모델을 올바르게 저장하는 데 문제가 있습니다. 이것은이 모델의 단일 필드에서만 발생하는 것으로 보입니다.중첩 모델의 필드가 비어있을 때 비어있는 레일이있는 문제
나는 두 가지 모델을 가지고, 수의사
class Veterinarian < ApplicationRecord
has_many :licenses
accepts_nested_attributes_for :licenses, allow_destroy: true, reject_if: :all_blank
end
및 라이센스
class License < ApplicationRecord
belongs_to :veterinarian
validates :number, :expiration_date, presence: true
end
내 컨트롤러 액션이 JSON으로 밖으로 렌더링이처럼 보이는 vet_params
와 Veterinarian.create(vet_params)
를 호출을 제외한 아무것도하지 않고있다.
{
"zip_code":"",
"title":"",
"bio":"",
"photo":"",
"licenses_attributes":{
"0":{
"number":"6436436446",
"expiration_date":"09/06/2018",
"_destroy":"false"
},
"1":{
"number":"Test Number",
"expiration_date":"09/16/2020",
"_destroy":"false"
},
"2":{
"number":"test 2",
"expiration_date":"09/30/2016",
"_destroy":"false"
}
}
}
적절한 PARAMS가 전송되는 '생성()'그러나 중첩 된 라이선스가 만료가 비어있을 수 없다는 오류를 던지고 유지합니다. 이는 첫 번째 라이선스 이후의 추가 라이선스에 대해서만 발생합니다. 첫 번째 검사는 유효합니다.
저는이 문제의 원인을 놓치고 있습니다. 나는 전에 이런 일이 일어난 것을 본 적이 없다. 어떤 아이디어라도 크게 감사 할 것입니다.
레일 5 btw입니다.
멋진 캐치! 이 문제가 해결되었습니다. – Mike