0

我正在尝试使用向上迁移在一个表中添加一列。我为此创建了迁移并运行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,所以我不能使用迁移更改方法。

4

1 回答 1

1

Rails 会根据表的列自动检测和分配模型属性。有关如何完成此操作的一些通用信息,本指南非常宝贵: http: //guides.rubyonrails.org/migrations.html

无论如何,这就是我将如何运行role向表中添加列的迁移users

  1. 在您的控制台中,运行rails g migration add_role_column_to_users role:string. (由于迁移名称以“users”结尾,Rails 会自动知道将此迁移应用到 users 表。指定role:string只是一个命令行快捷方式,会自动添加t.add_column :role, :string到您的迁移中。运行此命令后,您应该能够找到新的在db/migrate/您的应用程序目录中迁移。)

  2. 在您的控制台中,运行rake db:migrate以将数据库迁移到您的新架构。

  3. 而已!您现在应该在“用户”表上有一个“角色”列。您可以通过使用 进入 Rails 控制台并使用rails c调出用户模型的列名来验证这一点User.column_names。您应该在那里看到“角色”。

于 2012-10-18T22:27:18.070 回答