在 Rails 3 的迁移中使用 rename_column 后出现未知属性错误

Unknown attribute error after using rename_column in migration in Rails 3

我正在开发 Rails 3 应用程序,我正在尝试更新我的用户模型。我有一个 "role" 属性,我通过以下迁移更改为 "is_admin" 属性。

class ChangeRoleToIsAdminForUser < ActiveRecord::Migration
   def up
     rename_column :users, :role, :is_admin
   end

   def down
     rename_column :users, :is_admin, :role
   end
end

之后,我运行了以下命令来更改 schema.rb 文件。

rake db:migrate

这是生成的 schema.rb 文件。

ActiveRecord::Schema.define(:version => 20150102142012) do

  [...]

  create_table "users", :force => true do |t|
    t.datetime "created_at",      :null => false
    t.datetime "updated_at",      :null => false
    t.string   "login"
    t.string   "password_digest"
    t.string   "salt"
    t.string   "email"
    t.string   "name"
    t.string   "activated"
    t.string   "is_admin"
  end

end

可以看到属性修改成功。问题出在我的测试上。我使用 Rspec。在更改属性名称之前,我的所有测试都运行良好。现在,当我运行测试时,出现错误

ActiveRecord::UnknownAttributeError: unknown attribute: is_admin

这是我的测试文件的一部分。错误据说在行 ***.

describe 'testing attributes' do

  before(:each) do
    @valid_attributes = {name: 'Un Tuteur',
                       login: 'tuteur',
                       password: 'password',
                       password_confirmation: 'password',
                       email: 'emilie.picard.cantin@gmail.com',
                       activated: 'oui',
                       is_admin: 'usager'}
    @user = User.new(@valid_attributes)  ***
    @user.save
  end

  [...]
end

我已经更改了 user.rb 文件和 users_controller.rb 文件中的属性名称。不知道是什么问题...

请运行rake db:test:prepare在运行宁规格

之前

RAILS_ENV=test rake db:migrate 应该可以解决问题,因为 运行 rake db:migrate 仅在开发环境中应用更改