我正在尝试通过paperclip&上传文件s3 AWS-SDK。该文件正在成功保存到s3,但应用程序记录始终包含nil值。
附件型号:
class Attachment < ActiveRecord::Base
has_attached_file :attachment,
storage: :s3,
bucket: "test",
s3_credentials: "#{Rails.root}/config/s3.yml",
path: "test/:id/:style.:extension"
end
附件控制器:
class AttachmentsControllers < ApplicationController
def create
Attachment.create(attachment: params[:attachment])
end
end
日志:
SQL (1.0ms) INSERT INTO "attachments" ("attacheable_id", "attacheable_type", "attachment", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["attacheable_id", nil], ["attacheable_type", nil], ["attachment", nil], ["created_at", Mon, 04 Mar 2013 20:17:47 UTC +00:00], ["updated_at", Mon, 04 Mar 2013 20:17:47 UTC +00:00]]
[paperclip] Saving attachments.
[paperclip] saving :test/11/original.jpg
[AWS S3 200 1.783004 0 retries] put_object(:acl=>:public_read,:bucket_name=>"test",:content_length=>21377,:content_type=>"image/jpeg",:data=>#<Paperclip::UploadedFileAdapter:0xb5b91f80 @target=#<ActionDispatch::Http::UploadedFile:0xb2812290 @original_filename="544494_328200280615189_1305908665_n.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"song[attachment]\"; filename=\"544494_328200280615189_1305908665_n.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20130305-9168-1brnfyd>>, @tempfile=#<File:/tmp/544494_328200280615189_1305908665_n20130305-9168-1r0pwtu.jpg>>,:key=>":test/11/original.jpg")
答案 0 :(得分:0)
这条线没有意义:
Attachment.create(attachment: [:attachment])
您正在做的是将哈希传递给create方法。散列有一个键attachment
,它指向一个值,该值只包含符号:attachment
。
您可能希望从发送到控制器操作的参数中获取附件。像这样:
Attachment.create(attachment: params[:attachment])
另请注意,您应该遵循Rails的命名约定 - 模型附件的控制器应该命名为AttachmentsController