Методы смешанной проверки и обратного вызова - PullRequest
0 голосов
/ 11 января 2011

Когда создается мой экземпляр модели, он генерирует "invoice_no".Этот invoice_no зависит от financial_year счета-фактуры, который получен из invoice_date, указанного в форме.

Теперь я проверяю наличие invoice_date.Только после того, как invoice_date действителен, я могу сгенерировать financial_year и invoice_no.

Теперь, как лучше всего проверить уникальность invoice_no?

1. validates :invoice_date, :presence => true
2. before_create :assign_financial_year # Based on a valid invoice_date
3. before_create :generate invoice_no # Based on a valid financial_year
4. validates :invoice_no, :uniqueness => {:scope => [:financial_year, :another_field], :case_sensitive => false}

Я уже поместил уникальный индекс в базу данных этой таблицы на основе всех соответствующих полей.,

Как лучше всего смешать шаги 2 и 3 выше с проверками на шагах 1 и 4?или я не должен беспокоиться о проверке уникальности в рельсах, так как это сгенерированное число и уже обработано в базе данных?Если я не поставлю эту проверку, что будет изящным способом обработки исключения, если оно возникло из-за нарушения уникальности, если оно вообще сгенерировано?

Я довольно опытен с Rails и подумал о нескольких уродливыхпути уже.Просто нужно больше мнений о стратегии от других опытных программистов Rails.

1 Ответ

1 голос
/ 11 января 2011

Не думаю, что вам нужно обязательно рассчитывать год после запуска проверки.Вы можете сделать это заранее и потерпеть неудачу изящно, если нет invoice_date.Таким образом, ваша проверка будет продолжаться, и вы сможете повторить попытку позже, когда она появится.

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