在 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
仅在开发环境中应用更改
我正在开发 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
仅在开发环境中应用更改