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