ruby-on-rails - Ruby on Rails 重复列名 : user_id: ALTER TABLE "articles" ADD "user_id" integer

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

我不断收到错误消息: -- add_column(:articles, :user_id, :integer) rake 中止! StandardError:发生错误,此迁移和所有后续迁移均已取消:

SQLite3::SQLException:重复列名:user_id:ALTER TABLE“文章”ADD“user_id”整数

这是我所做的所有迁移:

 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

最佳答案

出现错误

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

关于ruby-on-rails - Ruby on Rails 重复列名 : user_id: ALTER TABLE "articles" ADD "user_id" integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685112/

相关文章:

ruby-on-rails - 使用包含多个关联和单独的条件

jquery - 使用 Rails link_to 禁用 Ajax 调用

ruby-on-rails - Ruby:将数据发布到 url

ruby - 处理目录中的前 n 个文件

ruby - 对数字密码进行排名的算法?

ruby-on-rails - 在 Rails Router 中获取异常内容

css - 在 Rails App hero-unit 中渲染图像

ruby-on-rails - Rails 4 - 插入重复的 ActiveRecord 数据

ruby-on-rails - Rails 4 设计自定义路线

ruby-on-rails - 记录 Elastic Beanstalk Node 应用程序