2010-02-24 4 views
1

몇 가지 모델에 대해 accepts_nested_attributes_for를 사용해 왔으며 이상한 상황이 있습니다.여러 요소에 대한 레일 유효성 검사

상위 모델을 통해 생성 빈칸을 건너 뛸 수 있으며 맨 아래부터 개별 레코드의 유효성을 검사 할 수 있지만 일련의 레코드에서 가장 복잡한 유효성 검사를 수행 할 수 있습니까?

나는 Rooms 및 Rates 모델을 보유하고 있습니다. 방은 has_many 요금과 accepts_nested_attributes_for 요금.

나는

accepts_nested_attributes_for :room_rates, :reject_if => lambda { |a| a[:price].blank? } 

에 공백을 걸러 낼 수 있지만 각각의 객실에 대한 7 가지 기록 (요금)이 있습니다 .. 항상 7과 같은 형태에서 한 번에 제출했다. 현재 1 일만 입력하면 허용됩니다. 그러나 나는 7이 모두 존재해야한다는 것을 확인하고 싶습니다. 그들은 모두 7을 입력하고 그것을 받아들이거나 1 또는 2 만 입력하면 오류가 발생합니다. 그리고 7을 모두 비워두면 아무 것도하지 않습니다.

nested_attirbutes에 대해서는 아직 아무 것도 보지 못했지만 가능한지 궁금합니다.

답변

1

나는이 일 것 모르겠지만, 당신은 당신의 방 클래스에 같은 비율의 크기를 확인할 수없는 경우

class Room < ActiveRecord::Base 
    validate :all_rates_present 

... 

private 
def all_rates_present 
    unless rates.size == 7 
    errors.add(:rates, "must all be filled in.") 
    end 
end