我想在第一次上传图像时对其进行一些处理。可以在不更新图像的情况下更新模型,我想避免在这些情况下进行额外的处理。如何编写检查以仅在图像是新图像(例如被替换)时处理图像?
像这样:
def update
@model = Model.find(params[:id])
@model.process_image if @model.image_is_different_from_existing?
...
end
如果您上传的照片具有唯一名称,则有一种方法,假设回形针属性名称为image
,回形针会创建一个名为image_file_name
的列,在保存之前,您可以检查数据库中存在的图像文件名是否与您正在上传的图像文件的名称匹配。我已经实现了这样的东西,下面是代码片段
product_images = product.product_attachments.pluck(:photo_file_name)
unless product_images.include?("name_of_the_image_i_am_uploading")
product.product_attachments.create!(:photo => File.open("/home/rajdeepb/Photo/#{data_array[1]}")) if all_images.include?("/home/rajdeepb/Photo/#{name_of_the_image_i_am_uploading}")
end
这可能不是完美的解决方案,但可能对您有所帮助
我编写了一个解决方案,用于在update
或create
方法中查找相关参数。
像这样:
用户.rb
def attachments
%w(banner footer logo)
end
users_controller.rb
def new_resources?
attaching = []
@user.attachments.each do |a|
attaching << a if params[:user][a].present?
end
return true unless attaching.empty?
end
def attaching
[]
end
def update
...
if @user.request_necessary? && new_resources?
action_response << "Server updated: new #{attaching} uploaded."
redirect_to users_path, notice: action_response.join(' ')