2016-02-04 3 views
0

У меня есть приложение для выставления счетов-фактур, и я пытаюсь добавить столбец, который называется invoice_number, а таблица имеет первичный ключ invoice_id. Я хочу, чтобы invoice_number был установлен на сохранение и увеличение на 1 Таким образом, каждый пользователь должен иметь счета-фактуры, где invoice_number начинается с 1Последовательный номер, который не является первичным ключом для отношения has_many

число Я хочу добавить только для целей аудита и должны быть частными.

Я хотел бы знать, что лучший способ сделать что-то подобное было бы

after_save :increment_invoice_number 

    private 
    def increment_invoice_number 
    self.invoice_number = current_user.invoice.count + 1 
    end 

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

ответ

1

Следующая должно работать ... это предполагает, что вы никогда не уничтожить счета (в противном случае вы можете в конечном итоге с повторяющимися номерами счетов-фактур)

before_save :increment_invoice_number 

private 

def increment_invoice_number 
return if persisted? 
self.invoice_number = user.invoices.count + 1 
end 

Обратите внимание на return if persisted? означает, что вы только задать номер счета для нового запись, а не существующая.

Смежные вопросы