我尝试使用迁移向上添加一个表中的一列。我为此创建了迁移并运行rake db:migrate:up[version]
它在我的表中添加了该列,但我在相应的模型中没有看到该属性。我在这里错过了什么吗?以下是我的摘要......
migration 6, :add_role_users do
up do
execute <<-SQL
ALTER TABLE users
ADD COLUMN role varchar(32) DEFAULT NULL
SQL
end
down do
execute <<-SQL
ALTER TABLE users
DROP COLUMN role
SQL
end
end
运行上述迁移后,我在用户模型中看不到以下行
property :role, , String, :length => 32
请建议,我使用的是Rails 3.0,因此我无法使用迁移更改方法。
答案 0 :(得分:1)
Rails会根据您的表格列自动检测和分配模型属性。有关如何完成此操作的一些常规信息,本指南非常有用:http://guides.rubyonrails.org/migrations.html
无论如何,这是我如何运行向role
表添加users
列的迁移。
在您的控制台中,运行rails g migration add_role_column_to_users role:string
。 (由于迁移名称以“users”结尾,因此Rails会自动知道将此迁移应用于users表。指定role:string
只是一个命令行快捷方式,可以自动将t.add_column :role, :string
添加到您的迁移中运行此命令后,您应该能够在应用的db/migrate/
目录中找到新的迁移。)
在您的控制台中,运行rake db:migrate
将数据库迁移到新架构。
就是这样!您现在应该在“用户”表上有一个“角色”列。您可以通过使用rails c
输入Rails控制台并使用User.column_names
显示用户模型的列名来验证这一点。你应该在那里看到“角色”。