Неопределенный метод `mass_assignment_sanitizer = 'для ActiveRecord :: Base: Class (NoMethodError) - PullRequest
25 голосов
/ 27 декабря 2011

Я изучаю Rails с помощью замечательного Ruby on Rails Tutorial от Michael Hartl. Я нахожусь в разделе 3.2.2 (Разработка через тестирование) , в котором мне нужно выполнить следующую команду для запуска тестов 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 , но ничто не исправляет неопределенную ошибку метода!

Ответы [ 2 ]

71 голосов
/ 28 декабря 2011

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

config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
1 голос
/ 25 сентября 2013

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...