#ruby-on-rails #rails-api
#ruby-on-rails #rails-api
Вопрос:
Есть ли рекомендуемый способ проверки любых входных параметров в действии контроллера для rails 4 API?
Я знаю, что могу внести параметры в белый список, но что, если я хочу проверить, предоставили ли они требуемые значения?
Пожалуйста, предположите, что не будет никаких проверок модели и что я должен проверить POST JSON в контроллере.
В качестве примера давайте воспользуемся примером JSON для создания пользователя.
{
"person": {
"firstname": "Joe",
"lastname": "Bloggs",
"age": "99",
"starsign": "virgo",
"address": {
"line1": "123 street",
"city": "NYC",
"zip": "90210"
}
}
}
Допустим, все эти поля были обязательными, каков был бы наилучший способ проверить, что они имеют значение (забудьте о проверке numericality ect, просто наличие). А также возвращает сообщение об ошибке, если один или несколько отсутствуют.
Я знаю, что проверка модели была бы лучшим способом сделать это, если бы я создавал такого человека:
Person.new(params)
но я на самом деле этого не делаю, поэтому мне нужен другой способ проверки значений!
Ответ №1:
https://github.com/ruby-json-schema/json-schema удовлетворит вашу потребность. Он может проверять данные json в зависимости от предоставленной схемы.
Комментарии:
1. Спасибо, попробую это
Ответ №2:
Что бы вы сделали в действии контроллера, это написать что-то вроде
params.require(:person).require(:firstname, :lastname)
Это выдаст ошибку, если параметр person не указан, тогда вам, вероятно, следует перехватить эту ошибку и предварительно сформировать желаемое поведение, которое должно включать уведомление пользователя о том, что параметр person не был предоставлен.
Комментарии:
1. Я не знал, что это возможно, и я проверю и посмотрю, как это работает..
2. да, я использовал это на днях для проверки конечных точек для rails API