【发布时间】:2011-06-05 18:58:44
【问题描述】:
我创建了一个具有“名称”属性的模型,但我想将其更改为“用户名”。我读过的关于数据库迁移的所有内容都涉及创建一个类或一些复杂的东西。我想做的只是相当于 SQL 中的“UPDATE TABLE”。您如何运行一次性数据库迁移来改变这一点?我猜它会涉及到 Rails 控制台,然后是一些命令?
【问题讨论】:
标签: ruby-on-rails database migration
我创建了一个具有“名称”属性的模型,但我想将其更改为“用户名”。我读过的关于数据库迁移的所有内容都涉及创建一个类或一些复杂的东西。我想做的只是相当于 SQL 中的“UPDATE TABLE”。您如何运行一次性数据库迁移来改变这一点?我猜它会涉及到 Rails 控制台,然后是一些命令?
【问题讨论】:
标签: ruby-on-rails database migration
第一:
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,然后重新生成架构。
但是如果你已经提交了代码,你应该创建一个单独的迁移文件,将name重命名为username。
这对于跟踪数据库的版本控制很重要。因此,您永远不应该真正使用手动 SQL (ALTER TABLE ...) 来更改架构。
【讨论】:
运行rails g migration RenameNameToUsername,这将在db/migrate中创建一个新文件。
打开该文件,并将其添加到 self.up 部分:
rename_column :tablename, :name, :username
然后运行rake db:migrate
【讨论】: