Ruby on Rails中的一次更改模型属性(列名)

我创建了一个具有属性“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更改为username ,然后重新生成模式。

但是,如果您已提交代码,则应创建一个单独的迁移文件,将namenameusername

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

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

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

 rename_column :tablename, :name, :username 

然后运行rake db:migrate