Как я могу создать Rails 4, когда сбой.find()

В конфигурации производственной среды я не могу найти параметр конфигурации, чтобы сообщить серверу, что когда ActiveRecord Class.find() выдает исключение, это должно быть действительно исключением. В режиме разработки он генерирует исключение ActiveRecord :: RecordNotFound, но при его производстве он спасает его и отображает 404. Кажется, я помню, что это то, что вы могли включить/выключить? Я предпочел бы не обезьянную патч 404, которая является единственным решением, которое я видел до сих пор.

Метод.find(id) следует использовать всякий раз, когда вы хотите, чтобы возникло исключение, если идентификатор не найден, как описано в документации. Если вы не хотите, чтобы исключение было выбрано, вы должны использовать.find_by_id (id).

1 ответ

https://github.com/rails/rails/blob/4-0-stable/activerecord/lib/active_record/railtie.rb#L26

добавляет отображение

'ActiveRecord::RecordNotFound' => :not_found

запрашивая action_dispatch для спасения "ActiveRecord :: RecordNotFound" с :not_found response.

Doing - YourAppName::Application.config.action_dispatch.rescue_responses.delete('ActiveRecord::RecordNotFound')

в вашем инициализаторе может получиться то, что вы ожидаете.

licensed under cc by-sa 3.0 with attribution.