【发布时间】:2012-04-17 06:04:42
【问题描述】:
更新:我在 Ruby 1.8 上运行。存储库的链接是 github.com/lauherk/sample_app
我正在阅读 Micheal hartl 的 Ruby on Rails 教程,在第 9 章中,我遇到了使用示例用户 http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users?version=3.2#sec:sample_users 填充数据库的问题
我的 rake 代码是:
namespace :db do
desc "Fill database with sample data"
task populate: :environment do
User.create!(:name => "Example User",
:email => "example@railstutorial.org",
:password => "foobar",
:password_confirmation => "foobar")
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(:name => name,
:email => email,
:password => password,
:password_confirmation => password)
end
end
end
同时运行后:
bundle exec rake db:reset
bundle exec rake db:populate
我从命令行收到以下错误:
rake aborted!
Can't mass-assign protected attributes: Lawrence Kertzmann
/Library/Ruby/Gems/1.8/gems/activemodel-3.2.2/lib/active_model/mass_assignment_security/sanitizer.rb:48:in `process_removed_attributes'
(每次我运行 rake 时,这个特定的名称都会改变)
我已经检查并确保在我的用户模型中我有代码
attr_accessible :name, :email, :password, :password_confirmation
甚至尝试过设置
config.active_record.whitelist_attributes = false
然而,在命令行中仍然有相同的结果。
有什么技巧可以让我的数据库中填充示例用户吗?
非常感谢。
【问题讨论】:
-
我将您的代码放入了我的 rake 任务中,并且它有效。 “示例用户”的创建没有错误。它似乎已经根据错误中的名称进入循环。另一方面,错误表明它试图设置的属性是“Lawrence Kertzmann”而不是“名称”或其他一些属性......
-
您使用的是 Ruby 1.9 吗?您正在使用新的 Ruby 1.9 哈希语法。
-
是的,它仍然无法给出错误“无法批量分配受保护的属性:Lawrence Kertzmann”
-
克隆了我的 repo 并将代码转换为与 Ruby 1.8.7 兼容,并且您的上述代码可以正常工作。
-
你的代码在 github 上吗?如果有,它的链接是什么?
标签: ruby-on-rails database railstutorial.org attr-accessible