我有类似RailsCasts中描述的模型:
应用程序/模型/ resident.rb:
class Resident < ActiveRecord::Base
include PhotoConcern
end
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/ employee.rb:
class Employee < ActiveRecord::Base
include PhotoConcern
end
Run Code Online (Sandbox Code Playgroud)
应用程序/模型/忧虑/ photo_concern.rb:
module PhotoConcern
extend ActiveSupport::Concern
included do
mount_uploader :photo, PhotoUploader
attr_accessor :photo_crop_x, :photo_crop_y, :photo_crop_w, :photo_crop_h
after_save :crop_photo
def crop_photo
photo.recreate_versions! if photo_crop_x.present?
end
end
end
Run Code Online (Sandbox Code Playgroud)
应用程序/上传/ photo_uploader.rb:
class PhotoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :cropped do
process :crop
end
version :thumb, from_version: :cropped do
process resize_to_fill: [100, 100]
end
version …
Run Code Online (Sandbox Code Playgroud)