Я действительно работаю над API, который использует Rails 4. Я хотел бы установить Content-Type запроса в JSON, если клиент не указывает тип носителя в заголовке Content-Type.
Чтобы получить это поведение, я попытался добавить следующий before_action в мой ApplicationController:
def set_request_default_content_type
  request.format = :json
end
В моем методе RegistrationsController#create у меня есть точка останова, чтобы проверить, все ли работает. Ну, трюк request.format не работает, несмотря на то, что значение установлено на application/json, кажется, что контроллер (или внутренние элементы Rails) не учитывает принятый запрос Content-Type как JSON.
Я выполнил запрос POST со следующим телом (и без Content-Type):
{"user" : {"email":"[email protected]","password":"foobarfoo"}}
Отладка с помощью Pry я вижу, что:
 [2] api(#<V1::RegistrationsController>) _  request.format.to_s
 => "application/json"
 [3] api(#<V1::RegistrationsController>) _  params
 => {
       "action" => "create",
   "controller" => "v1/registrations"
 }
Это означает, что Rails не рассмотрел мой запрос с параметром request.format, настроенным с помощью Mime::JSON, но вместо этого с Mime::ALL и поэтому он не разобрал тело JSON запроса.: (