Я работаю над JSON-API для моего приложения на Rails 3.1. Я хотел бы предоставить пользовательский ответ об ошибке вместо значения по умолчанию:
{"error":"You need to sign in or sign up before continuing."}
Мой контроллер API включает в себя вызов before_filter для authenticate_user!
, который и обрабатывает этот ответ JSON.
Во время поиска я наткнулся на этот вопрос StackOverflow , который ссылается на эту вики-статью Devise . К сожалению, запись в вики не достаточно многословна, чтобы я мог понять, о чем она говорит. В частности, я понятия не имею, куда я должен поместить этот код так, чтобы Devise / Warden знал, как отобразить то, что я хочу вернуть.
Из комментариев на другой вопрос SA звучит так, будто мне не нужно звонить custom_failure!
, так как я использую версию Devise выше 1.2 (1.4.2, если быть точным). Однако запись в вики не объясняет, куда должен идти вызов render
, так что authenticate_user!
знает, как использовать это вместо своего собственного вызова рендеринга.
Куда идет этот render
звонок?
Редактировать: Я не просто пытаюсь изменить само сообщение (а-ля devise en.yml
config); Я пытаюсь изменить фактический формат ответа. В частности, я хочу вернуть это:
render :text => "You must be logged in to do that.", :status => :unauthorized