나는이 다음 모델 :억제 "기본은"속성
class Evaluation < ActiveRecord::Base
attr_accessible :product_id, :description, :evaluation_institutions_attributes
has_many :evaluation_institutions, :dependent => :destroy
accepts_nested_attributes_for :evaluation_institutions, :reject_if => lambda { |a| a[:token].blank? }, :allow_destroy => true
validate :requires_at_least_one_institution
private
def requires_at_least_one_institution
if evaluation_institution_ids.nil? || evaluation_institution_ids.length == 0
errors.add_to_base("Please select at least one institution")
end
end
end
class EvaluationInstitution < ActiveRecord::Base
attr_accessible :evaluation_institution_departments_attributes, :institution_id
belongs_to :evaluation
has_many :evaluation_institution_departments, :dependent => :destroy
accepts_nested_attributes_for :evaluation_institution_departments, :reject_if => lambda { |a| a[:department_id].blank? }, :allow_destroy => true
validate :requires_at_least_one_department
private
def requires_at_least_one_department
if evaluation_institution_departments.nil? || evaluation_institution_departments.length == 0
errors.add_to_base("Please select at least one department")
end
end
end
class EvaluationInstitutionDepartment < ActiveRecord::Base
belongs_to :evaluation_institution
belongs_to :department
end
내가 그렇게 내 양식이 중첩되어, EvaluationInstitution 및 EvaluationInstitutionDepartment에 대한 중첩 된 속성이 포함되어 평가의 형태를 갖는다 3 단계. 제 3 수준은 저에게 문제를주고 있습니다.
오류
예상대로 트리거하지만 오류가 requires_at_least_one_department에 대한 트리거 할 때 텍스트가평가 기관 기지를 읽고있다하십시오 선택 적어도 하나의 부서 메시지는 "읽어야
하세요 적어도 하나의 부서를 선택하십시오 ".
"평가 기관베이스"는 어떻게 제거합니까? 초기화에 다음 원숭이 패치를 추가
@Kevin에 대한 답변을 찾으셨습니까? 나는 똑같은 문제를 겪고있다. 질문을 간소화하면 도움이 될지 궁금해 ..? –
답변을 찾지 못했습니다. – Kevin
@paul, btw, 내 작업은 모든 유효성 검사를 상위 레벨 모델 평가로 밀어 넣는 것이 었습니다. 예를 들어 my : requires_at_least_one_department 함수가 평가 모델로 이동합니다. 대단한 해결책은 아닙니다. – Kevin