Rails迁移使用paperclip抱怨未定义的方法`attachment“

时间:2013-07-05 06:13:49

标签: ruby-on-rails ruby paperclip database-migration

Lemmie只是说这是我对Rails相当新的一个。

我们的应用程序使用回形针(3.2.4)来管理附件,像往常一样,我生成的迁移看起来像:

class AddAttachmentPhotoToPhpfoxUsers < ActiveRecord::Migration
  def self.up
    change_table :phpfox_user do |t|
      t.attachment :photo
    end
  end

  def self.down
    drop_attached_file :phpfox_user, :photo
  end
end

(它被称为phpfox_user,因为我们必须建立在遗留数据库之上)

这一切都很棒,工作正常。但是,我们还必须管理2个数据库并进行迁移,因此我根据此帖中的建议重新安排了迁移:

http://excid3.com/blog/rails-activerecord-multiple-databases-and-migrations

我不知道这应该有多好,但它似乎是一个相当简洁的解决方案,它可以很好地组织迁移。

但是现在回形针迁移不起作用,因为找不到附件类型。我假设它不再在范围内或者没有绑定到表对象。有没有人知道我应该做些什么才能把它带进来,我已经尝试过将'paperclip'添加到模块中,但这没有用。

我也尝试过使用add_attachment助手,但也没找到。

我们正在使用Rails 3.2.13和Ruby 2.0.0。

编辑:拼写错误

3 个答案:

答案 0 :(得分:5)

好的,想通了。 add_attachment助手在schema.rb文件中定义。不知道是否正确,但如果我包括:

include Paperclip::Schema

进入文件,它可以工作。

答案 1 :(得分:1)

确保您的Gemfile中存在paperclip(可能是最新版本),运行bundle install然后运行

bundle exec rake db:migrate

它应该可以正常工作。

答案 2 :(得分:1)

我正在使用ruby 2.1.5和rails 4.2.1

我的合作伙伴添加了paperclip gem后,我从git中提取了代码

我下载了paperclip gem,添加到我的gemfile(我们的gemfiles不同),但没有指定paperclip的版本。

所以我很惊讶我必须使用&#39; has_attached_file&#39; (适用于较旧版本的回形针)

我必须:

1)在schema.rb中包含paperclip :: Schema 2)用has_attached_file替换附件 3)rake db:migrate