用于ActiveRecord :: Base的未定义方法`mass_assignment_sanitizer =':Class(NoMethodError)

hao*_*ike 25 rspec ruby-on-rails

我正在使用Michael Hartl的Ruby on Rails教程学习Rails .我在3.2.2节(测试驱动开发)中,我需要运行以下命令来运行我的Rails项目的rspec测试:

bundle exec rspec spec/
Run Code Online (Sandbox Code Playgroud)

但它不起作用.相反,我得到这个错误:

/Users/mh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/
activerecord-3.1.3/lib/active_record/base.rb:1088:in `method_missing':
undefined method `mass_assignment_sanitizer=' for
ActiveRecord::Base:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

我已经尝试重新安装rspec更改我的Gemfile,但没有任何安抚未定义的方法错误!

小智 72

你是否从Rails 3.2 RC1降级了?从development.rb中注释掉以下两行:

config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
Run Code Online (Sandbox Code Playgroud)

  • 有这个问题,并在从Rails 3.2升级到4.2时修复 (3认同)
  • 由于TS使用rspec,他应该在test.rb而不是development.rb中注释掉这一行 (2认同)