Подтвердить что ты не робот

Undefined метод `mass_assignment_sanitizer = 'для ActiveRecord:: Base: Class (NoMethodError)

Я изучаю Rails с потрясающим учебником Ruby on Rails Майклом Хартлом. Я нахожусь в разделе 3.2.2 (Test Driven Development), в котором мне нужно запустить следующую команду для запуска тестов rspec для моего проекта Rails:

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, но ничто не успокаивает ошибку метода undefined!

4b9b3361

Ответ 1

Вы отказались от Rails 3.2 RC1? Прокомментируйте следующие две строки из вашего development.rb:

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

Ответ 2

В то время как ответ m818 разрешит проблему, вы все равно можете получить ошибки, если вы используете tyring для использования устаревших методов в другом месте вашего кода.

У меня была та же проблема, комментируя, что эти строки избавились от некоторых ошибок, но не все из них, где бы я ни использовался attr_accessible, дали мне ту же ошибку.

Оказалось, что это был камень `active_record ', который был обновлен до 4.0, когда я этого не хотел. Поскольку я использую приложение Padrino, я должен был сделать это в Gemfile:

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

Это решило все проблемы, и мне не пришлось комментировать строки в database.rb.