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

时间:2011-12-27 16:48:26

标签: ruby-on-rails rspec

我正在通过Michael Hartl的精彩 Ruby on Rails Tutorial 学习Rails。我在section 3.2.2 (Test Driven Development),我需要运行以下命令来运行我的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)

我已尝试重新安装rspecchanging my Gemfile,但没有任何方法可以解决未定义的方法错误!

2 个答案:

答案 0 :(得分:70)

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

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

答案 1 :(得分:1)

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

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

原来是`active_record'的宝石,当我不想要的时候更新到了4.0。由于我使用的是Padrino应用程序,我必须在Gemfile中执行此操作:

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

这解决了所有问题,我没有必要在database.rb中注释掉这些内容。