Где проводить проверки после разработки DCI?

Я следую за DCI, чтобы структурировать поведение нового Rails-приложения, но у меня есть некоторые сомнения относительно того, где поставить проверки.

Традиционно, если вы собираетесь управлять своими данными с использованием моделей ActiveRecord, проверки определяются в конкретном классе, который наследуется от AR, и они, похоже, подходят как часть уровня данных.

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

Считаете ли вы хорошей идеей сохранить эти валидации в ролях? Если да, то как вы объявляете их, не загрязняя другие экземпляры того же класса, кроме объекта? Если я хочу использовать проверки ActiveRecord, они объявляются на уровне класса, поэтому я не могу присоединить их к объекту индивидуально, вынуждая использовать повторное объявление метода проверки "validate" в модуле роли (прикрепление ошибки в массив ошибок объекта непосредственно) или какой-либо подобный метод.

+7
источник поделиться
1 ответ

Это зависит от рассматриваемых валидаций/правил. Основной целью DCI является разделение того, что система (модель домена) от того, что делает система (функциональность), если правила связаны с моделью домена. Например. правила для приветствия SSN, тогда он должен быть частью объектов данных. С другой стороны, если правила связаны с функциональными возможностями системы. пользователю разрешено заказывать только два супердепозитных продукта каждую неделю, то это вопрос для контекста

+4
источник

Посмотрите другие вопросы по меткам или Задайте вопрос