sedovalx / taxi

6 stars 3 forks source link

Серверная валидация #19

Closed sedovalx closed 9 years ago

sedovalx commented 9 years ago

Стандартный вариант Ember. Тут описано, что клиент ожидает получить в ответ, если при сохранении объекта возникли ошибки валидации. Нужно это поддерживать на сервере. В принципе вся валидация может быть описана в виде типов и признаков опциональности полей доменных типов (тут надо про ассоциации подумать). Для этого есть встроенный механизм описания правил валидации Play.

Если это окажется сложно, то можно попробовать сделать обратный ход - сделать кастомный обработчик серверных ошибок валидации на клиенте. Но лучше все же придерживаться формата Ember.

v1pka commented 9 years ago

@sedovalx какой статус у валидации? json.validate[User] - это работает или надо продумывать?

sedovalx commented 9 years ago

@v1pka там валидация на уровне совпадения типов и обязательности. При этом генерируется ошибка, которую ember не понимает. Я пока еще этим сильно не занимался. Нужно доделывать, расширять.

v1pka commented 9 years ago

@sedovalx посмотри, плиз, этот коммит. Сделал валидацию для User в методах create и update.

sedovalx commented 9 years ago

@v1pka немного не так, поправил сериализацию ошибки. К тому же, оказалось, что нужно возвращать код 422. В остальном вроде нормально. Нужно подумать, как ошибки делать читаемыми. Про более сложные правила валидации пока не думаем наверное.

sedovalx commented 9 years ago

Тест забыл. Завтра сделаю. Вообще, надо подумать, как для entity контроллеров базовый класс сделать.

sedovalx commented 9 years ago

Отключил пока генерацию sql. Что-то не разобрался пока, как и её иметь, и скрипт schema_up.sql. Наверное нужно было модель scala-кодом описать, а не в sql. Постараюсь завтра это сделать.

v1pka commented 9 years ago

@sedovalx сегодня попробовал сделать базовый контроллер. Есть засада: а) с нашим trait Entity и методом copy, используемым в контроллере - решается отказом от copy и объявление всех переменных как var б) использование UserService - тут либо для всего вводить слой абстракции, либо.. хз :)

sedovalx commented 9 years ago

@v1pka еще не понял, о чем ты, но могу сказать, что UserController - это не показатель, там много того, чего не будет в остальных. Тренироваться можно на DriverController.

v1pka commented 9 years ago

@sedovalx смотри - у контроллеров в create идет вызов *Repo(Например, DriverRepo), а в UserController - в UserService

sedovalx commented 9 years ago

@v1pka ну будем считать, что в каком-то виде это есть.