RubyonRails中的一次性更改模型属性(列名)



我创建了一个具有属性"name"的模型,但我想将其更改为"username"。我读到的关于数据库迁移的所有内容都涉及创建一个类或一些复杂的东西。我所要做的就是在SQL中执行相当于"UPDATE TABLE"的操作。如何运行一次性数据库迁移来改变这一点?我猜这会涉及rails控制台和一些命令?

第一个:

rails g migration rename_name_column_to_username

然后在生成的rename_name_column_to_username.rb迁移文件中:

class RenameNameColumnToUsername < ActiveRecord::Migration
  def self.up
    rename_column :users, :name, :username
  end
  def self.down
    rename_column :users, :username, :name
  end
end

然后rake db:migrate

如果您还没有提交最初创建"name"列的代码,您可以直接进入创建该列的旧迁移文件,将name更改为username,然后重新生成架构。

但是,如果您已经提交了代码,那么应该创建一个单独的迁移文件,将name重命名为username

这对于跟踪数据库的版本控制非常重要。因此,您永远不应该真正使用手动SQL(ALTERTABLE…)来更改模式。

运行rails g migration RenameNameToUsername,它将在db/migrate中创建一个新文件。

打开该文件,并将其添加到self.up部分:

rename_column :tablename, :name, :username

然后运行rake db:migrate

相关内容

最新更新