0

更新

很确定我的问题是由不允许我attr_accesible: cover在 issue.rb 模型中仅使用带有 main 的回形针的错误引起的。

我收到此错误:

Issue model missing required attr_accessor for 'cover_file_name'

所以这可能是由于对 mass_assignment 的安全更改引起的某种回形针错误?

原始问题

我有一个带有 Paperclip 3(Gemfile.lock 中的 3.4.2)的新 rails 项目(3.2.13)。我正在尝试通过问题模型中的回形针上传文件。它们保存到文件系统,但不保存到对象或数据库。

我已经尝试了所有尝试保存这些的组合(我认为)。

相关代码:

问题控制器.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 正在运行并且是最新的。保存时我没有收到任何错误,并且文件在文件系统中正确显示。我的调试语句输出显示文件名并说:

/system/issues/covers//original/image_name.jpg?1377891456
[paperclip] Saving attachments.

但也显示 DB 值的空值:

  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。

4

2 回答 2

1

所以最终的原因是数据库中列的名称与模型中使用的名称不同。不知何故,我在迁移中有cover_image,在模型中有cover。故事的寓意,如果您对此感到困惑,请确保先检查列名

于 2013-08-30T20:42:11.537 回答
0

检查您的参数哈希,但我认为您从表单中得到的只是cover. 所以使用:

attr_accessible :cover

而不是所有的列名。回形针在内部设置这些属性,而不是通过批量分配。

于 2013-08-30T19:57:47.670 回答