无法使用回形针附加文件(Paperclip版本3.5.1)

时间:2013-10-17 00:01:49

标签: ruby-on-rails-4 paperclip

我的回形针有一个奇怪的问题。以下是我的pry会话,以验证此问题。当我上传文件时,回形针附件构造得很好,但是当我去保存数据库中的对象时,数据丢失了!!

我正在尝试上传的图片已成功上传到正确的位置。

     7:     flash[:notice] = "Item created"
     8:     item = Item.new(strong_params)
     9:     item.user = current_user
    10:     item.photo = params[:item][:photo]
    11:     item.save
 => 12:     binding.pry
    13:     redirect_to item
    14:   end
    15:   def strong_params
    16:     params.require(:item).permit!
    17:   end
    pry(#<ItemsController>)> item.errors.messages
=> {}
pry(#<ItemsController>)> dbItem = Item.find(item.id)
=> #<Item id: 2, user_id: 1, name: "", description: "", created_at: "2013-10-16 23:49:06", updated_at: "2013-10-16 23:49:06", photo_file_name: nil, photo_content_type: "image/jpeg", photo_file_size: 11763, photo_updated_at: "2013-10-16 23:49:06">
pry(#<ItemsController>)> dbItem.photo_file_name == item.photo_file_name
=> false
pry(#<ItemsController>)> puts dbItem.photo_file_name         

=> nil
pry(#<ItemsController>)> puts item.photo_file_name
item.jpg
=> nil
pry(#<ItemsController>)> 

有问题的控制器操作

 def create
    flash[:notice] = "Item created"
    item = Item.new(strong_params)
    item.user = current_user
    item.photo = params[:item][:photo]
    item.save
    binding.pry
    redirect_to item
  end
  def strong_params
    params.require(:item).permit!
  end

项目表

 create_table "items", force: true do |t|
    t.integer  "user_id"
    t.string   "name"
    t.string   "description"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "photo_file_name"
    t.string   "photo_content_type"
    t.integer  "photo_file_size"
    t.datetime "photo_updated_at"
  end

项目模型

class Item < ActiveRecord::Base
  belongs_to :user
  attr_accessor :photo_file_name

  has_attached_file :photo,
    :url => "/assets/photos/:id/:style/:basename.:extension",
    :path => ":rails_root/public/assets/items/:id/:style/:basename.:extension"
  validates_attachment_presence :photo
end

1 个答案:

答案 0 :(得分:1)

我怀疑你的attr_accessor :photo_file_name正在覆盖Paperclip中的某些东西,因为它期望它是一个活跃的记录字段。