부모 개체에 속한 자식 수를 어떻게 확인할 것입니까? 내가 답을 속성을 중첩 받아들이는 질문 객체가있는 경우belongs_to ActiveRecord의 형제 수를 제한 하시겠습니까?
예를 들어, :
class Question < ActiveRecord::Base
has_many :answers
accepts_nested_attributes_for :answers, :allow_destroy => true
end
을 내가 답변의 수를 제한하려면, 나는 검사, 응답 객체에 사용자 지정 유효성 검사를 추가 할 수 있습니다 부모와 같은 다른 답변을 계산 :
class Answer < ActiveRecord::Base
belongs_to :question
validate :check_max_answers
private
def check_max_answers
count = question.answers.select {|a| a != self}.count
if (count > 10)
errors.add(:answers, 'Too many answers!')
end
end
end
check_max_answers 실행, 그것은 단지 이미 지속 된 다른 답변을 계산합니다.
응답이 중첩 된 특성으로 저장되므로 질문이 저장되지 않아 유효성 검사가 모두 초기 저장을 통과하므로 모두 저장되어 유효하지 않게됩니다!
처음 질문을 저장하기 전에 answers.count가 항상 0이기 때문에 질문 객체에 유효성 검사를 입력하면 마찬가지로 동일한 문제가 발생합니다.
내가 뭘 잘못하고 있니? 이러한 종류의 유효성 검사를 수행 할 수있는 해결 방법이 있습니까? 당신을 위해 결과를 제한해야한다, 내가 제대로 질문을 읽고 있으면 제한 : 어떤 도움
검색된 항목 수가 제한되는 것처럼 보입니다. 그것은 어떤 검증을하지 않는 것 같습니다. 나는 10 가지 이상의 해답이 처음부터 지속되는 것을 막고 싶다. – Chris