[英]Paperclip saving files to filesystem but not to model / db
可以肯定的是,我的问题是由某些错误引起的,该错误使我无法仅使用带有主要attr_accesible: cover
回形针。
我收到此错误:
Issue model missing required attr_accessor for 'cover_file_name'
因此,这可能是由于mass_assignment的安全性更改引起的回形针错误?
我有一个带有回形针3(Gemfile.lock中的3.4.2)的新Rails项目(3.2.13)。 我正在尝试在问题模型中通过回形针上传文件。 它们保存到文件系统,但不保存到对象或数据库。
我已经尝试过尝试保存这些方法的所有组合(我认为)。
issues_controller.rb
def create
@issue = Issue.new
@issue.attributes = params[:issue]
respond_to do |format|
if @issue.save
format.html { redirect_to @issue, notice: 'Issue was successfully created.' }
format.json { render json: @issue, status: :created, location: @issue }
else
format.html { render action: "new" }
format.json { render json: @issue.errors, status: :unprocessable_entity }
end
end
end
形成:
<%= form_for @issue, :multipart => true, :method => :post do |f| %>
....
<%= f.file_field :cover %>
模型:
class Issue < ActiveRecord::Base
has_many :pages
attr_accessible :number, :name, :cover
has_attached_file :cover, :styles => { :medium => "300x300>"}, :default_url => "/images/:style/missing.png"
attr_accessor :cover_file_name, :cover_content_type, :cover_file_size, :cover_updated_at
validates_attachment :cover, :presence => true
end
我想我已经查看了关于Stackoverflow的所有其他回形针问题建议。 ImageMagick正在工作并且是最新的。 我没有保存任何错误,文件正确显示在文件系统中。 我的debug语句输出显示文件名并显示:
/system/issues/covers//original/image_name.jpg?1377891456
[paperclip] Saving attachments.
但还会显示数据库值的空值:
SQL (1.4ms) INSERT INTO `issues` (`cover_image_content_type`, `cover_image_file_name`, `cover_image_file_size`, `cover_image_updated_at`, `created_at`, `name`, `number`, `updated_at`) VALUES (NULL, NULL, NULL, NULL, '2013-08-30 19:49:54', 'Test', 'JPEG 30', '2013-08-30 19:49:54')
有什么想法吗? 有什么建议吗? TIA。
因此,这的最终原因是数据库中列的名称与模型中使用的名称不同。 不知何故,我在迁移中有cover_image,而在模型中有Cover。 故事的寓意,如果您对此感到困惑,请确保首先检查列名 。
检查您的params哈希值,但是我认为您将从表格中获得的只是cover
。 因此使用:
attr_accessible :cover
而不是所有列名。 回形针在内部设置这些属性,而不是通过批量分配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.