我想在文件上传转换为临时文件之前访问请求对象并将其添加到稍后处理的队列中,主要是因为IO对象无法编码(marshal)或序列化。我怎样才能做到这一点?
我还需要稍后“重做”请求。我应该在 Rails 请求生命周期的哪个点进行此操作?
最佳答案
代码示例,在routes.rb中:
post 'incoming_email' => Proc.new { |env|
RequestCache.create!(
data: env['rack.input'].read,
content_type: env['CONTENT_TYPE'],
content_length: env['CONTENT_LENGTH']
)
[200, {'Content-Type' => 'text/plain'}, ['OK']]
}
在模型中:
class RequestCache < ActiveRecord::Base
attr_accessible :data, :content_length, :content_type
def params
Rack::Request.new({
'rack.input' => StringIO.new(data),
'CONTENT_LENGTH' => content_length,
'CONTENT_TYPE' => content_type
}).POST
end
end
关于ruby-on-rails - 如何访问 Rails 中的原始请求并稍后在 Rails 中重新实例化该请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800060/