迁移如何在Rails3.0中更新模型

时间:2012-10-18 22:16:07

标签: ruby-on-rails rails-migrations

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

1 个答案:

答案 0 :(得分: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 c输入Rails控制台并使用User.column_names显示用户模型的列名来验证这一点。你应该在那里看到“角色”。