Здравствуйте
Столкнулся со следующей проблемой в рабочем проекте.необходимо сменить структуру каталогов для загружаемых посредством carrierwave изображений. Уперся в потолок файловой системы nix'ов в 32000 директорий.
Сейчас файлы загружаются в директорию:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{model.id}/"
end
def filename
"photo.jpg" if original_filename
end
А нужно чтобы стало:
def store_dir
"uploads/#{model.class.to_s.underscore}/"
end
Плюс файлы переименовать в :
def filename
"#{secure_token}.jpg" if original_filename
end
protected
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end
Но если я просто меняю директорию, то ссылки на старые файлы становятся недействительными. Нашел на stackoverflow
решение . Сделал всё один в один, выполняю скрипт:
RoutePointPhoto.all.each do |image|
image.photo.cache!
image.photo.store!
end
получаю ошибку:
ArgumentError: wrong number of arguments (1 for 0)
from /team/mss/app/uploaders/route_point_photo_uploader.rb:30:in `swap_out_store_dir'