rails 4未定义的方法`sql_type'在迁移中

时间:2013-09-03 08:56:59

标签: ruby-on-rails ruby-on-rails-4 rails-migrations rails-postgresql

我有以下迁移:

class CreateTariffs < ActiveRecord::Migration
  def change
    create_table :tariffs do |t|
      t.string :name
      t.decimal :amount, precision: 10, scale: 6, default: 0.0
      t.timestamps
    end
  end
end

我的迁移因此例外而失败:

undefined method `sql_type' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::ColumnDefinition:0x000000089a4108>/home/polygalin/.rvm/gems/ruby-2.0.0-p195/gems/activerecord-postgres-array-0.0.9/lib/activerecord-postgres-array/activerecord.rb:42:in `quote_with_array'

但是,如果我删除“amount”列的默认值,则迁移成功。 任何人都可以帮助找出迁移失败的原因,十进制列的默认值是什么?

2 个答案:

答案 0 :(得分:1)

我找到了原因。它是在activerecord-postgres-array gem中。 Active Record 4已经有了postgres数组支持,我只需删除它,迁移成功。

答案 1 :(得分:0)

请尝试按以下更改运行迁移,并告知我是否失败。

class CreateTariffs < ActiveRecord::Migration
  def change
    create_table :tariffs do |t|
      t.string :name
      t.decimal :amount, precision: 10, scale: 6, default: 0.00 # or default: 0
      t.timestamps
    end
  end
end