0

attr_accessibleを変更してこの問題を修正している人をすでに見つけましたが、このエラーはgem rake自体にあるのではないかと思いますか?

rake --trace db:seed

-ログ出力開始-

** Invoke db:seed (first_time)
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:abort_if_pending_migrations
rake aborted!
Can't mass-assign protected attributes: authentication_token
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-3.2.8/lib/active_model/mass_assignment_security/sanitizer.rb:48:in `process_removed_attributes'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-3.2.8/lib/active_model/mass_assignment_security/sanitizer.rb:20:in `debug_protected_attribute_removal'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-3.2.8/lib/active_model/mass_assignment_security/sanitizer.rb:12:in `sanitize'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activemodel-3.2.8/lib/active_model/mass_assignment_security.rb:230:in `sanitize_for_mass_assignment'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.8/lib/active_record/attribute_assignment.rb:75:in `assign_attributes'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.8/lib/active_record/base.rb:498:in `initialize'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.8/lib/active_record/persistence.rb:44:in `new'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.8/lib/active_record/persistence.rb:44:in `create'
/Users/devx/passbook_rails_example/db/seeds.rb:1:in `<top (required)>'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:245:in `load'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:245:in `block in load'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:236:in `load_dependency'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:245:in `load'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.8/lib/rails/engine.rb:520:in `load_seed'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:309:in `block (2 levels) in <top (required)>'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/Users/devx/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/bin/rake:19:in `load'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/bin/rake:19:in `<main>'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/bin/ruby_noexec_wrapper:14:in `eval'
/Users/devx/.rvm/gems/ruby-1.9.3-p362/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => db:seed

-ログ出力終了-

4

2 に答える 2

2

これは問題であるとおっしゃっていたように、レーキとはまったく関係ありません。関連するモデルをMassAssignment変更することで修正できます。attr_accessible

ここで実際に行われるのは、seedによって実行されるタスクがrakeモデルを作成しようとすることです(私は推測します)。キーを含むUserように指定されたハッシュパラメータのようです。次のようになります。User.createauthentication_token

User.create name: 'foo', email: 'mail@bar.com', authentication_token: 'qfgsdgf' ...

ただし、モデルのリストには含まれてUserいないため、を作成しようとするとこのエラーがスローされます。:authentication_tokenattr_accessibleUser

MassAssignment問題が発生したときに例外ではなく警告が必要な場合は、構成を変更できます。

config / environment / {development、test、production}.rbにあります

config.active_record.mass_assignment_sanitizer = :strict
于 2013-01-12T16:28:23.523 に答える
0

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 aborted!
Can't mass-assign protected attributes: 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:in `debug_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:in `sanitize_for_mass_assignment'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active_record/attribute_assignment.rb:75:in `assign_attributes'
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.11/lib/active_record/base.rb:497:in `initialize'
/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:14:in `new'
/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:14:in `block (2 levels) in <top (required)>'
/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:5:in `each'
/Users/media1/Desktop/rails_apps/lib/tasks/clipsfree_import.rake:5:in `block in <top (required)>'
Tasks: TOP => clipsfree_import
(See full trace by running task with --trace)

解決策:modelsフォルダーのloopsfree.rbのattr_accessibleに属性タイトルを追加しました

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

これがお役に立てば幸いです:)ハッピーコーディング

于 2013-03-09T02:36:13.650 に答える