Ruby on rails Rails使用CloudMailIn和回形针将附件保存到S3

Ruby on rails Rails使用CloudMailIn和回形针将附件保存到S3,ruby-on-rails,heroku,amazon-s3,paperclip,cloudmailin,Ruby On Rails,Heroku,Amazon S3,Paperclip,Cloudmailin,我有一个Rails应用程序,可以处理客户票据(WOREQUEST)。这些票在客户和员工之间来回有评论。评论可以有一个附件。它在Heroku上运行,回形针将附件存储在S3中 创建新评论并向客户和分配给工单的员工发送电子邮件时 我正在使用CloudMailIn,以便客户或员工可以用新的评论回复评论电子邮件 到目前为止,效果很好 但是,我想允许返回的电子邮件包含一个附件 这是正在工作的传入邮件控制器: class IncomingMailsController < ApplicationCont

我有一个Rails应用程序,可以处理客户票据(WOREQUEST)。这些票在客户和员工之间来回有评论。评论可以有一个附件。它在Heroku上运行,回形针将附件存储在S3中

创建新评论并向客户和分配给工单的员工发送电子邮件时

我正在使用CloudMailIn,以便客户或员工可以用新的评论回复评论电子邮件

到目前为止,效果很好

但是,我想允许返回的电子邮件包含一个附件

这是正在工作的传入邮件控制器:

class IncomingMailsController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def create
    Rails.logger.info params
    worequest = params[:envelope][:to].split('@')[0]
    contents = params[:plain].split('---')[0]
    message = Comment.new(
        :worequest_id  => worequest,
        :user_id => User.find_by_email(params[:envelope][:from]).id,
        :comments => contents,
        :tenant_id => 1
    )
    if message.save
      render :text => 'Success', :status => 200
    else
      render :text => message.errors.full_messages, :status => 422, :content_type => Mime::TEXT.to_s
    end
end
附件是散列,“0”是密钥的名称<代码>参数[:附件]['0']

我可以很好地访问这些字段:

Rails.logger.info params[:envelope][:from]
Rails.logger.info params[:envelope][:to]
Rails.logger.info params[:attachments]['0'].original_filename
Rails.logger.info params[:attachments]['0'].content_type
但是,如何设置回形针
:attach
文件

:attach => params[:attachments]['0'].tempfile  ?
:attach => params[:attachments]['0'].read  ?
这是我目前的尝试:

attach = Attachment.new(
    :comment_id  => 346,
    :name => "Email Attachment",
    :attach_file_name => params[:attachments]['0'].original_filename,
    :attach_content_type =>  params[:attachments]['0'].content_type,
    :attach => params[:attachments]['0'].path,
    :tenant_id => 1
)
:attach=>参数[:attachments]['0']。路径
错误

得到这个:

  Paperclip::AdapterRegistry::NoHandlerError (No handler found for "/tmp/RackMultipart20140115-13-tcpvtw"): 
我不知道该用什么

:attach => params[:attachments]['0'].read,
:attach => params[:attachments]['0'].path.to_file,
:attach => params[:attachments]['0'].path.read,
谢谢你的帮助

这起作用了:

        :attach => params[:attachments]['0'],

我有一个类似的问题,官方示例将其显示为params[:attachments][0],而不是['0']。。。一旦我改变了,我就可以直接分配东西,比如user.avatar=params[:attachments][“0”]
        :attach => params[:attachments]['0'],