Где / Как мне проводить проверку и преобразование сущностей в Google App Engine? - PullRequest
0 голосов
/ 27 ноября 2009

В Ruby on Rails каждая сущность модели имеет метод перехвата validate_on_ что-то , который вызывается до того, как сущность действительно сохраняется в базе данных. Я хотел бы, чтобы подобный функционал в Google App Engine. Мне известно, что вы можете выполнять проверку отдельных свойств, передавая им аргументы в их объявлениях. Однако, если я хочу сделать больше проверки, чем это, есть ли место в объявлении класса модели, в котором я могу это сделать?

Кроме того, в том же духе, иногда сущность нуждается в модификации, прежде чем она фактически сохраняется в базе данных. Мне может понадобиться изменить (трансформировать) сущность прямо перед тем, как она действительно будет записана в базу данных. Есть ли место в объявлении класса сущности, которое позволило бы мне сделать это?

Мне известно, что я могу поместить эти преобразования / проверки вне класса. Но это вряд ли похоже на хороший ОО дизайн. Похоже, что для такого рода потребностей в модели должны быть автоматически подключены методы ловушек.

Итак, мой вопрос: каков наиболее подходящий способ проверки и преобразования сущностей до их сохранения?

Ответы [ 2 ]

2 голосов
/ 27 ноября 2009

Лучший ответ зависит от того, какие преобразования вам нужно сделать. Для моделей нет обобщенных методов до и после операции, но есть несколько других опций:

  • Как вы упомянули, вы можете передавать функции проверки конструкторам класса Property
  • Вы можете использовать пользовательский класс свойств, который генерирует значения программно, например this .
  • Вы можете изменить сущности, поскольку они хранятся на самом низком уровне, используя перехватчики вызова API .
1 голос
/ 27 ноября 2009

Используете ли вы какой-либо веб-фреймворк поверх API сырого движка приложений? Rails - это фреймворк очень высокого уровня. Вы изучили Django или другие веб-фреймворки? Вы можете обнаружить, что они ближе к рельсам, чем к необработанным объектам.

В качестве альтернативы, если вы хотите что-то на более низком уровне, посмотрите эту статью на Крючки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...