Мой контроллер data_files_controller.rb
def upload_balances
DataFile.load_balances(params)
end
Моя модель data_file.rb
def self.load_balances(params)
# Pull the file out of the http request, write it to file system
name = params['Filename']
directory = "public/uploads"
errors_table_name = "snapshot_errors"
upload_file = File.join(directory, name)
File.open(upload_file, "wb") { |f| f.write(params['Filedata'].read) }
# Remove the old data from the table
Balance.destroy_all
# ------ more code-----
end
Работает нормально.Теперь я хочу использовать отложенную работу с моим контроллером для вызова действия моей модели, например .. Мой контроллер data_files_controller.rb
def upload_balances
DataFile.send_later(:load_balances,params)
end
Возможно ли это ??Какой еще способ сделать это?Это создает какие-либо проблемы?
С этим send_later я получаю эту ошибку в столбце last_error в таблице delayed_job.
uninitialized stream
C:/cyncabc/app/models/data_file.rb:12:in `read'
C:/cyncabc/app/models/data_file.rb:12:in `load_balances'
C:/cyncabc/app/models/data_file.rb:12:in `open'
Я получаю ошибку в строке
File.open(upload_file, "wb") { |f| f.write(params['Filedata'].read) }
при чтении параметров ['Filedata']. читать.
как проверить, правильно ли я получаю данные в параметрах ['Filedata'] или нет?Без send_later работает нормально ... Есть какое-нибудь решение?