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

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

bundle exec rspec spec/ 

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

 /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) 

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

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

 config.active_record.mass_assignment_sanitizer = :strict config.active_record.auto_explain_threshold_in_seconds = 0.5 

虽然m818的答案可以解决问题,但如果您想在代码中的其他地方使用弃用的方法,则可能仍然会出错。

我有同样的问题,评论出那些线条摆脱了一些错误,但不是所有的,在我使用attr_accessible地方给了我同样的错误。

事实certificate,当我不想要它时,它被更新为4.0的`active_record’gem。 由于我使用的是Padrino应用程序,我必须在Gemfile中执行此操作:

 gem 'activerecord', '= 3.2.12', :require => "active_record" 

这解决了所有问题,我没有注释掉database.rb的行。