2012-06-16 4 views
3

나는 사용자가 5 개의 파일을 저장할 수 있도록하려면, 그래서 여기 내 새로운 액션의 (보다 작은 것도 괜찮습니다) (place_photos는 종이 클립 첨부, 장소 : has_many의 PlacePhoto) :종이 클립. 빈 파일을 저장하지 않으려면 어떻게해야합니까?

def new 
    @place = Place.new 
    5.times { @place.place_photos.build } 
    ... 
end 

내 폼 외모 (조금 단순화) :

<%= f.simple_fields_for :place_photos do |photo| %> 
    <%= photo.input :photo %> 
    <%= photo.input :description %> 
<% end %> 

결과적으로 5 개의 파일 필드가 생성됩니다. 양식을 제출하면 파일이 제공되지 않으면 빈 PlacePhoto 레코드가 만들어집니다. 빈 레코드를 저장하지 못하게하고 오류가 발생하지 않도록하려면 어떻게해야합니까?

감사합니다.

답변

6

place 모델에서는 다음과 같이 place_photos 유효성을 검사 할 수 있습니다 :

Class Place < ActiveRecord::Base 

accepts_nested_attributes_for :place_photos , :reject_if => proc { |attributes| attributes['photo'].blank? }, :allow_destroy => true 

end 
+0

브릴리언트. 고맙습니다. 방금 조금 바꿨습니다 : accepts_nested_attributes_for : place_photos, : reject_if => proc {| attributes | ! attributes [ 'photo']. 선물? }, : allow_destroy => true – Jacek

+0

:) 예! 데이터보다는 사진으로 만들어야합니다. – asitmoharna

+0

감사합니다. – deivid