我正在通过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)
我已尝试重新安装rspec
和changing my Gemfile,但没有任何方法可以解决未定义的方法错误!
答案 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
中注释掉这些内容。