簡體   English   中英

Ruby on Rails教程(作者Hartl),當做name = Faker :: Name.name encoutner時無法批量分配受保護的屬性錯誤

[英]Ruby on Rails Tutorial( by Hartl) when doing name = Faker::Name.name encoutner Can't mass-assign protected attributes error

更新:我在Ruby 1.8上運行。 到存儲庫的鏈接是github.com/lauherk/sample_app

我正在閱讀Micheal hartl撰寫的Ruby on Rails教程,在第9章中,我遇到了一個使用示例用戶http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users填充數據庫的問題版本= 3.2#sec:sample_users

我的耙子的代碼是:

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'

(此名稱每次我運行耙子時都會更改)

我已經檢查並確保在我的用戶模型中我有代碼

attr_accessible :name, :email, :password, :password_confirmation

甚至嘗試設置

  config.active_record.whitelist_attributes = false

但是,在命令行上仍然有相同的結果。

有一些使樣本用戶填充我的數據庫的提示嗎?

非常感謝。

attr_accessible :name

到模型。 當前,您只有:user_name (和其他值)可訪問。

只需將authentication_token添加到attr_accessible中例如:我得到的錯誤

Media1s-Mac-mini:rails_apps media1 $ rake clipsfree_import RAILS_ENV = development csvfile = / Users / media1 / Desktop / clips / atemp5 / demotracks2 / import.csv rake已中止! 無法批量分配受保護的屬性:title /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active_model/mass_assignment_security/sanitizer.rb:48:in process_removed_attributes' /usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.11/lib/active_model/mass_assignment_security/sanitizer.rb:20:indebug_protected_attribute_removal'/ usr / local / rvm / gems / ruby​​- 1.9.3-p194 / gems / activemodel-3.2.11 / lib / active_model / mass_assignment_security / sanitizer.rb:12:in sanitize'/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activemodel- 3.2.11 / lib / active_model / mass_assignment_security.rb:230:insanitize_for_mass_assignment'/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active_record/attribute_assignment.rb:75 :在Assign_attributes中/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_apps / lib / tasks / clipsfree_import.rake:14:在新的'/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:14:i 在/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:5:中的nblock(2個級別)在每個用戶中/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:5:inblock in '任務:TOP => clipsfree_import(通過使用--trace運行任務,查看完整的跟蹤信息)

解決方案:在models文件夾的loopsfree.rb中將屬性標題添加到attr_accessible。

class Loopsfree < ActiveRecord::Base attr_accessible :ISRC, :title, :artist, :bpm, :file_name, :genre, :id, :sub_genre end

希望這會有所幫助:)快樂編碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM