Rails 3.2 Неопределенная ошибка метода для active_record / mass_assignment_sanitizer - PullRequest
2 голосов
/ 27 января 2012

Я обновил rails с 3.1 до 3.2 и добавил в свой файл environment / development.rb следующее:

# Raise exception on mass assignment protection for Active Record models
config.active_record.mass_assignment_sanitizer = :strict

# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5

Добавление, которое возвращает эту ошибку при попытке запустить сервер:

/User/oprogfrogo/.rvm/gems/ruby-1.9.2-p180@rails32/gems/railties-3.2.0/lib/rails/railtie
/configuration.rb:85:in `method_missing': undefined method `active_record' for 
#<Rails::Application::Configuration:0x00000101305e88> (NoMethodError)

Когда убираю, все нормально.Почему это происходит?

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Я нашел проблему.Первоначально мое приложение было настроено так, чтобы исключать активные записи и быть приложением без поддержки базы данных.

0 голосов
/ 27 января 2012

Странно, но взгляните на метод method_missing в lib/rails/railtie/configuration.rb.

def method_missing(name, *args, &blk)
  puts "in configuration.rb:method_missing" # <= try to add these debug lines
  puts name
  puts args
  if name.to_s =~ /=$/
      @@options[$`.to_sym] = args.first
  elsif @@options.key?(name)
    @@options[name]
  else
    super # <= 85 line
  end
end

Я бы предположил, что name.to_s =~ /=$/ - это то, что должно быть true, но это не такпроверяет метод, заканчивающийся =.Попробуйте добавить какой-нибудь журнал отладки в начале метода и посмотрите, не могли ли вы, например, случайно включить некоторые странные символы в имя переменной конфигурации.

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