Powered by SmartDoc

4.3.2 イメージ管理メソッド(check_images)

def check_images(caller_def_name, param = nil)
  case caller_def_name
  when :edit
    $already_attached_blob_ids = []
    eval "@#{$individual[:model_name]}.images.each { |image| $already_attached_blob_ids << image.blob_id }"
  when :update
    blob_ids = []
    images_checked = {}
    delete_images = []
    if not param.nil?
      param.each do |key, val|
        images_checked[key.to_i] = val.to_bool
        delete_images << key.to_i if val.to_bool
      end
    end
    eval "@#{$individual[:model_name]}.images.each { |image| blob_ids << image.blob_id }"
    added_blob_ids = blob_ids - $already_attached_blob_ids
    if not added_blob_ids.empty?
      added_blob_ids.each do |val|
        Document.create(
                         user_id: $individual[:user_id],
                         individual_id: $individual[:id],
                         blob_id: val,
                         content: eval("@#{$individual[:model_name]}.image_content"))
        images_checked[val] = false
      end
    end
    if not delete_images.empty?
      Document.all.each do |document|
        document.destroy if delete_images.include?(document.blob_id)
      end
    end
    eval "@#{$individual[:model_name]}.images.each { |image| image.purge if images_checked[image.blob_id] }"
    $already_attached_blob_ids = nil
  when :destroy
    eval "@#{$individual[:model_name]}.images.each do |image|
      document = Document.where(blob_id: image.blob_id).first
      document.destroy if not document.nil?
      image.purge
    end"
  else
  end
end