ユーザーが製品の複数の写真をアップロードできる製品ページを作成しています。製品を作成および編集するために、フォーム ファイルをレンダリングしています。写真をアップロードするために、製品の形で写真にnested_fieldsを使用しました。フォーム内の写真コードは次のようになります。
<%= f.fields_for :photos do |photo| %>
<%= image_tag photo.object.avatar.url(:thumb), unless f.object.new_record? or photo.object.new_record? %>
<%= photo.file_field :avatar, :style => "none" %>
<%= photo.link_to_remove "Remove"%>
<% end %>
<%= f.link_to_add 'Add Photos', :photos, "data-association-insertion-node"=> ".photos", "data-association-insertion-position" => "append", "data-type" => "link"%>
製品モデルでは、
has_many :photos, :as => :attachable, :dependent => :destroy
accepts_nested_attributes_for :photos, :allow_destroy => true
ユーザーが製品を作成するとき、写真の存在の検証を使用しました。そのため、ユーザーは写真をアップロードする必要があります。この作品は正常に動作しています。
写真モデル:
validate :validates_account_avatar
しかし、問題は編集にあります。ユーザーはすべての写真を削除できます。ここでは、ユーザーがすべての写真を削除できないようにしたいと考えています。
編集した製品を送信する際に、写真フィールドを空白にすることはできないこと、または少なくとも 1 枚の写真が存在する必要があることをユーザーに通知する方法。
私はこれを使用しようとしました:
accepts_nested_attributes_for :photos, :allow_destroy => true, :reject_if => lambda { |a| a[:avatar].blank? }
しかし、役に立たない。
ヘルプ!