未定义的方法`列' for Foreigner :: ConnectionAdapters :: ForeignKeyDefinition

时间:2014-10-30 18:26:46

标签: ruby-on-rails

我尝试运行迁移时收到以下信息:

NoMethodError: undefined method `column' for #<Foreigner::ConnectionAdapters::ForeignKeyDefinition:0x007fa020938740>

以下是迁移代码:

class CreateAdvertisement < ActiveRecord::Migration
  def change
    create_table :advertisement do |t|
      t.integer :issue_id, null: false
      t.string :client_name, null: false
      t.decimal :size, null: false
      t.decimal :price, null: false
      t.decimal :commission_amount, null: false
      t.string :first_payment, null: false
      t.string :second_payment, null: false

      t.timestamps null: false
      t.foreign_key :issue
    end
  end
end

我安装了Foreigner 1.6.1,Rails 4.2.0。有什么想法吗?

2 个答案:

答案 0 :(得分:22)

你,或者你的一个宝石使用了外国人&#39; gem,使用rails 4.2.0弃用

您应该更新它或删除此依赖项。 也许有人已经做过了,例如我使用了“邮箱”#39; gem,和&#39; github.com/div'已经分叉项目来创建一个分支,所以我改变了我的Gemfile:

gem 'mailboxer', :git => 'git://github.com/div/mailboxer.git', :branch => 'rails42-foreigner'

答案 1 :(得分:18)

你不需要外国人使用Rails 4.2,因为它已经内置了外键支持。语法与外国人非常相似(尽管不完全相同)。

请参阅:http://edgeguides.rubyonrails.org/4_2_release_notes.html#foreign-key-support