在用Rails的ActiveStorage上传图片之前,我正在尝试调整图片的大小。下面的控制器操作就像一种魅力:
class CatsController < ApplicationController
require 'mini_magick'
def create
@cat = current_user.cats.new(cat_params)
params[:cat][:images].each do |image|
mini_image = MiniMagick::Image.new(image.tempfile.path)
mini_image.resize '1200x1200'
end
if @cat.save
...
end
end
end但我想保持我的控制器瘦身,并将此功能转移到模型。但是当我这样做时,Rails无法在模型中找到tempfile。
在模型中根本没有访问tempfile的方法吗?
谢谢你的帮助。
发布于 2020-02-17 05:00:15
或者,您可以创建一个服务。
# app/services/image_resizer.rb
class ImageResizer
def self.call(images, size)
Array(images).each do |image|
i = MiniMagick::Image.new(image.tempfile.path)
i.resize size
end
end
end
def create
@cat = current_user.cats.new(cat_params)
ImageResizer.call(params[:cat][:images], '1200x1200')
if @cat.save
...
end
endhttps://stackoverflow.com/questions/60252184
复制相似问题