10

在我的 linux 开发环境中使用 S3 设置回形针非常简单——一切都是开箱即用的。但是,我无法让它在 Heroku 上运行。

当我尝试上传时,日志显示:

Processing ItemsController#create (for 72.177.97.9 at 2010-08-26 16:35:14) [POST]  
  Parameters: {"commit"=>"Create", "authenticity_token"=>"0Hy3qvQBHE1gvFVaq32HMy2ZIopelV0BHbrSeHkO1Qw=", "item"=>{"photo"=>#<File:/home/slugs/270862_4aa601b_4b6f/mnt/tmp/RackMultipart20100826-6286-1256pvc-0>, "price"=>"342", "name"=>"a new item", "description"=>"a new item", "sold"=>"0"}}

Paperclip::PaperclipError (Item model missing required attr_accessor for 'photo_file_name'):

我发现一篇博客文章引用了这个错误,并说将它添加到我的模型中:

attr_accessor :photo_file_name
attr_accessor :photo_content_type
attr_accessor :photo_file_size
attr_accessor :photo_updated_at

这确实使模型缺少“photo_file_name”错误所需的 attr_accessor 消失了,但它仍然不起作用。有关详细信息,请参阅我的另一个问题。正如我发现的那样,将 attr_accessor 行添加到我的模型中,即使在我的开发系统上上传也会失败,我怀疑这不是正确的答案。

4

3 回答 3

30

发现问题:需要更新数据库。

heroku 运行 rake:db:migrate

heroku 重启

我已经完成了我认为已经完成同样事情的事情:

heroku rake db:schema:load

但也许这不起作用或过程中出现了问题。

于 2010-08-27T02:38:36.387 回答
4

如果您在迁移中创建错误的列类型,则会发生此类错误。为回形针定义新表迁移时,需要指定t.attachment :nameinsted of t.string :name。或者add_attachment :table, :name当您在现有表中添加新的回形针列时。现在您不需要attr_accessor在模型中添加这些属性。

于 2014-05-13T14:31:22.700 回答
1

好吧,这条消息似乎是因为它缺少列。尝试创建一个迁移创建列:

class AddPhotoToEvent < ActiveRecord::Migration
  def change
    add_column :events, :photo_file_name,    :string
    add_column :events, :photo_content_type, :string
    add_column :events, :photo_file_size,    :integer
    add_column :events, :photo_updated_at,   :datetime
  end

结尾

这对我有用,这里我有一张带照片的餐桌活动

于 2013-05-27T02:41:24.593 回答