Да, вы на правильном пути, у вас есть несколько вариантов работы с существующими данными.
Вы должны добавить проверку к on: create
, потому что вы не хотите, чтобы люди (или рабочие места)), которые изменяют другие несвязанные поля в отдельном процессе, чтобы иметь ошибку, потому что причина является недопустимой и слишком длинной.
Однако, если вы добавляете только on: create
, это означает, что кто-то может создать причину, используя менее 10 слов, а затем обновить запись в пользовательском интерфейсе обновления до 60 слов и нарушить проверку.Также рассмотрите возможность добавления той же проверки с if: :reason_changed?
, чтобы предотвратить обновления, нарушающие правила проверки, налагаемые на создание.
Другое разумное решение, которое вы можете использовать в этом случае, - выполнить миграцию данных для существующих записей, дляВ каждой записи, которая нарушает проверку, вы сокращаете слова до 49, добавляете ...
в конце и сохраняете его.Это может привести к потере информации, однако это будет означать, что вы можете применять эту проверку всегда в 100% случаев.Иногда исправление данных является отличным вариантом для написания меньшего количества кода.
Независимо от того, что вы выберете, убедитесь, что у вас есть тесты, чтобы повысить уверенность в том, что код выполняет то, что, по вашему мнению, должно быть.