Ruby on Rails重复列名:user_id:ALTER TABLE“articles”ADD“user_id”整数

时间:2016-04-18 03:42:14

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

我不断收到错误消息: - add_column(:articles,:user_id,:integer) 耙子流产了! StandardError:发生错误,此以及所有后续迁移都已取消:

SQLite3 :: SQLException:重复的列名:user_id:ALTER TABLE“articles”ADD“user_id”integer

这是我所做的所有迁移:

 class AddUserIdToArticles < ActiveRecord::Migration
  def change
    add_column :articles, :user_id, :integer
  end
end
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
        t.string :username
        t.string :email
        t.timestamps
    end
  end
end
class AddDescriptionToArticles < ActiveRecord::Migration
  def change
    add_column :articles, :description, :text
    add_column :articles, :created_at, :datetime
    add_column :articles, :updated_at, :datetime
  end
end
class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
      t.string :title
    end
  end
end

1 个答案:

答案 0 :(得分:3)

错误已开启

class AddUserIdToArticles < ActiveRecord::Migration
  def change
    add_column :articles, :user_id, :integer
  end
end

因为表user_id

上已存在列articles

您可以通过将代码更改为:

进行验证
class AddUserIdToArticles < ActiveRecord::Migration
  def change
    unless column_exists? :articles, :user_id
      add_column :articles, :user_id, :integer
    end
  end
end

但是我没有建议,列不应该在第一位,或者你只是想添加一个已经存在的列。

顺便说一下,我建议在外键中添加一个索引,比如user_id