我是Ruby on Rails的新手。我有一个名为创建用户
的迁移class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.column :username, :string, :limit => 25, :default => "", :null => false
t.column :hashed_password, :string, :limit => 40, :default => "", :null => false
t.column :first_name, :string, :limit => 25, :default => "", :null => false
t.column :last_name, :string, :limit => 40, :default => "", :null => false
t.column :email, :string, :limit => 50, :default => "", :null => false
t.column :display_name, :string, :limit => 25, :default => "", :null => false
t.column :user_level, :integer, :limit => 3, :default => 0, :null => false
end
User.create(:username=>'test',:hashed_password=>'test',:first_name=>'test',:last_name=>'test',:email=>'test@test.com',:display_name=> 'test',:user_level=>9)
end
end
当我运行rake db:migrate
时,使用上面提到的列创建表,但测试数据不存在
mysql>select * from users;
Empty set (0.00 sec)
编辑我刚刚删除了整个数据库并重新启动了迁移,现在它显示以下错误。
rake aborted!
An error has occurred, all later migrations canceled:
Can't mass-assign protected attributes: username, hashed_password, first_name, last_name, email, display_name, user_level
我做错了什么请帮忙? 谢谢。
答案 0 :(得分:1)
添加
attr_accessible :username, :hashed_password, :first_name, :last_name, :email, :display_name, :user_level
到你的user.rb
答案 1 :(得分:0)
这是Rails禁止用户通过param哈希创建或更新对象的方法。您需要在模型中将用户属性指定为attr_accessible
:
示例:
class User
attr_accessible :username, :firstname (etc)
end
详细了解质量分配here。
答案 2 :(得分:0)
只是为了完成有关测试环境的答案。您可以运行rake db:test:prepare
来检查迁移并加载架构!