我创建了一个带有“name”属性的模型,但我想将其更改为“username”。我读过的关于数据库迁移的所有内容都涉及创建一个类或一些复杂的东西。我想要做的只是SQL中的“UPDATE TABLE”。如何运行一次性数据库迁移来更改此设置?我猜它涉及rails控制台,然后是一些命令?
答案 0 :(得分:9)
首先:
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
答案 1 :(得分:3)
如果您尚未提交最初创建“名称”列的代码,则只需转到创建该列的旧迁移文件,然后将name
更改为username
,然后重新生成架构。
但是,如果您已提交代码,则应创建一个单独的迁移文件,将name
重命名为username
。
这对于跟踪数据库的版本控制非常重要。因此,您永远不应该真正使用手动SQL(ALTER TABLE ...)来更改架构。
答案 2 :(得分:0)
运行rails g migration RenameNameToUsername
,这将在db/migrate
中创建一个新文件。
打开该文件,并将其添加到self.up
部分:
rename_column :tablename, :name, :username
然后运行rake db:migrate