Ответ 1
Вы отказались от Rails 3.2 RC1? Прокомментируйте следующие две строки из вашего development.rb:
config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
Я изучаю 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!
Вы отказались от Rails 3.2 RC1? Прокомментируйте следующие две строки из вашего development.rb:
config.active_record.mass_assignment_sanitizer = :strict
config.active_record.auto_explain_threshold_in_seconds = 0.5
В то время как ответ m818 разрешит проблему, вы все равно можете получить ошибки, если вы используете tyring для использования устаревших методов в другом месте вашего кода.
У меня была та же проблема, комментируя, что эти строки избавились от некоторых ошибок, но не все из них, где бы я ни использовался attr_accessible
, дали мне ту же ошибку.
Оказалось, что это был камень `active_record ', который был обновлен до 4.0, когда я этого не хотел. Поскольку я использую приложение Padrino, я должен был сделать это в Gemfile:
gem 'activerecord', '= 3.2.12', :require => "active_record"
Это решило все проблемы, и мне не пришлось комментировать строки в database.rb
.