我正在开发Rails 3应用,我正在尝试更新我的用户模型。我有一个“角色”属性,我通过以下迁移更改为“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文件中的属性名称。我不知道问题是什么......
答案 0 :(得分:5)
请在运行规范之前运行rake db:test:prepare
答案 1 :(得分:0)
RAILS_ENV=test rake db:migrate
应解决此问题,因为正在运行rake db:migrate
仅在开发环境中应用更改