Ruby on rails RubyonRails教程(由Hartl编写)在执行name=Faker::name.name编码时可以';t质量分配受保护的属性错误
更新:我运行的是Ruby 1.8。指向存储库的链接是github.com/lauherk/sample_app 我正在阅读Micheal hartl的Ruby on Rails教程,在第9章中,我遇到了一个用示例用户填充db的问题 我的rake的代码是:Ruby on rails RubyonRails教程(由Hartl编写)在执行name=Faker::name.name编码时可以';t质量分配受保护的属性错误,ruby-on-rails,database,railstutorial.org,attr-accessible,Ruby On Rails,Database,Railstutorial.org,Attr Accessible,更新:我运行的是Ruby 1.8。指向存储库的链接是github.com/lauherk/sample_app 我正在阅读Micheal hartl的Ruby on Rails教程,在第9章中,我遇到了一个用示例用户填充db的问题 我的rake的代码是: namespace :db do desc "Fill database with sample data" task populate: :environment do User.create!(:name => "Ex
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
然而,在命令行中仍然有相同的结果
用示例用户填充我的数据库有什么提示吗
非常感谢 添加
attr_accessible :name
与模型相一致。当前您只有:user\u name
(和其他值)可访问 添加
attr_accessible :name
与模型相一致。当前您只有
:user\u name
(和其他值)可访问 只需将身份验证令牌添加到可访问属性,例如:我收到的错误
Media1s Mac mini:rails\u应用media1$rake clipsfree\u导入
RAILS_ENV=开发
csvfile=/Users/media1/Desktop/clips/atemp5/demoracks2/import.csv
流产了!无法批量分配受保护的属性:标题
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security/sanitizer.rb:48:in
进程\u已删除\u属性'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security/sanitizer.rb:20:indebug\u protected\u attribute\u remove'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security/sanitizer.rb:12:in
消毒'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security.rb:230:insanimatize\u for_mass\u assignment'/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active\u record/attribute\u assignment.rb:75:in
分配_属性'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active_record/base.rb:497:ininitialize'
/Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:14:in
新的
/Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:14:inblock
(2级)在'
/Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:5:in
各自的
/Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:5:inblock
在'Tasks:TOP=>clipsfree_import(通过运行task查看完整跟踪
使用--trace)
解决方案:在models文件夹的loopsfree.rb中为attr_accessible添加属性标题
class Loopsfree < ActiveRecord::Base attr_accessible :ISRC, :title, :artist, :bpm, :file_name, :genre, :id, :sub_genre end
class Loopsfree
希望这有帮助:)快乐编码只需将身份验证令牌添加到可访问属性,例如:我收到的错误 Media1s Mac mini:rails\u应用media1$rake clipsfree\u导入 RAILS_ENV=开发 csvfile=/Users/media1/Desktop/clips/atemp5/demoracks2/import.csv 流产了!无法批量分配受保护的属性:标题 /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security/sanitizer.rb:48:in 进程\u已删除\u属性' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security/sanitizer.rb:20:indebug\u protected\u attribute\u remove' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security/sanitizer.rb:12:in 消毒' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active\u model/mass\u assignment\u security.rb:230:insanimatize\u for_mass\u assignment'/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active\u record/attribute\u assignment.rb:75:in 分配_属性' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active_record/base.rb:497:ininitialize' /Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:14:in 新的 /Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:14:inblock (2级)在' /Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:5:in 各自的 /Users/media1/Desktop/rails\u apps/lib/tasks/clipsfree\u import.rake:5:inblock 在'Tasks:TOP=>clipsfree_import(通过运行task查看完整跟踪 使用--trace) 解决方案:在models文件夹的loopsfree.rb中为attr_accessible添加属性标题
class Loopsfree < ActiveRecord::Base attr_accessible :ISRC, :title, :artist, :bpm, :file_name, :genre, :id, :sub_genre end
class Loopsfree
希望这有帮助:)快乐编码我把你的代码放在我的rake任务中,它成功了。“示例用户”的创建没有错误。它似乎已根据错误中的名称转到循环。另一方面,错误表示它试图设置的属性是“Lawrence Kertzmann”,而不是“name”或其他属性……您使用的是Ruby 1.9吗?您正在使用新的Ruby 1.9哈希语法。是的,它仍然不起作用,出现错误“无法批量分配受保护的属性:Lawrence Kertzmann”克隆了我的repo,并将代码转换为与Ruby 1.8.7兼容的代码以及上面的代码。您在github上有代码吗?如果是的话,它的链接是什么?我把你的代码放在我的rake任务中,它成功了。“示例用户”的创建没有错误。它似乎已根据错误中的名称转到循环。另一方面,错误表示它试图设置的属性是“Lawrence Kertzmann”,而不是“name”或其他属性……您使用的是Ruby 1.9吗?您正在使用新的Ruby 1.9哈希语法。是的,它仍然不起作用,出现错误“无法批量分配受保护的属性:Lawrence Kertzmann”克隆了我的repo,并将代码转换为与Ruby 1.8.7兼容的代码以及上面的代码。您在github上有代码吗?如果是,原因是什么