Когда создается мой экземпляр модели, он генерирует "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.