迁移:使用引用它的其他表重命名表

时间:2016-10-28 07:36:27

标签: mysql ruby-on-rails activerecord ruby-on-rails-5

我创建了一个名为Query的表,现在必须重命名它,因为我不能在模型中使用它,因为Query是一个保留字。我将其重命名为SupportQuery。

Query引用了UsersQuery

class CreateQueries < ActiveRecord::Migration[5.0]
  def change
    create_table :queries do |t|
      t.string :name
      t.timestamps
    end
  end
end


class CreateUsersQueries < ActiveRecord::Migration[5.0]
  def change
    create_table :users_queries do |t|
      t.string :name
      t.references :query, foreign_key: true
      t.references :user, foreign_key: true
      t.timestamps
    end
  end
end

这是我尝试重命名并重命名参考。

class RenameQueryTables < ActiveRecord::Migration[5.0]
  def change
    rename_column :users_queries, :query_id, :support_query_id
    rename_table :queries, :support_queries
    rename_table :users_queries, :user_support_queries
  end
end

我收到外键约束。接下来我尝试删除引用然后再添加它。

class RenameQueryTables < ActiveRecord::Migration[5.0]
  def change
    remove_reference :users_queries, :query, foreign_key: true        
    rename_table :queries, :support_queries
    rename_table :users_queries, :user_support_queries
    remove_reference :user_support_queries, :support_query, foreign_key: true
  end
end

但这会删除列中的当前数据。真的很感激任何帮助!

0 个答案:

没有答案