【发布时间】:2011-03-04 05:14:55
【问题描述】:
我的控制器 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,我在 delay_job 表的 last_error 列中收到了这个错误。
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'].read.
如何检查我是否在 params['Filedata'] 中获取了正确的数据? 没有 send_later 它工作正常...有什么解决办法吗?
【问题讨论】:
标签: ruby-on-rails ruby delayed-job