У меня есть следующая модель:
class Section < ApplicationRecord
has_many_attached :files
def to_dir
[client.to_dir, operation.to_dir, self.name.parameterize].join('/')
end
after_save :transload_files
def transload_files
TransloadService.sync( self.to_dir, self.files )
end
end
Метод transload_files
является проблемой. Вот служба перегрузки:
class TransloadService
class << self
def sync(check_dir, files)
# First we have to check the transload dir for files that have been deleted on the app
transloaded_files = Request.list(check_dir)
cull_list = transloaded_files.reject{ |e| files.map{|t| t.filename }.include? Request.filename(e)}
if cull_list.count > 0
Request.trim(cull_list)
p "#{cull_list.count} files trimed from #{check_dir}."
end
# Next we have to upload files which arent present in the transload dir
send_list = files.reject{ |e| transloaded_files.map{|t| Request.filename(t) }.include? e.filename.to_s }
if send_list.count > 0
Request.upload_to(check_dir, send_list)
p "#{send_list.map{|r| r.filename.to_s}.join(', ')} uploaded to #{check_dir}"
end
end
end
end
, а вот соответствующий код в request.rb
class Request
class << self
def upload_to(destination, files)
files.each do |file|
send_to = connection.object("#{destination}/#{file.filename}")
file.open{ |tmp| send_to.upload_file(tmp) }
end
end
end
end
Проблема, с которой я сталкиваюсь, заключается в следующем: Когда выполняется обратный вызов after_save
метод transload_files возвращает ActiveStorage::FileNotFoundError (ActiveStorage::FileNotFoundError)
Когда я запускаю Section.last.transload_files
в консоли, он работает точно так, как задумано. Что мне здесь не хватает?