我有一个Payment
带有属性的模型invoice_nr
。此属性应在保存之前递增(1)。重要的是所有人payments
都有一个独特的invoice_nr
.
我可以使用相对于 1before_save
递增的回调:invoice_nr
Payment.maximum("invoice_nr")
class Payment < ActiveRecord::Base
before_save :increment_invoice_nr
private
def increment_invoice_nr
self.invoice_nr = Payment.maximum("invoice_nr") + 1
end
end
但我认为这并不能确保invoice_nr
. 如果两个payments
人同时得救,理论上他们可以得到相同的invoice_nr
……对吗?
如果两者之间有差距也没关系invoice_nrs
,但是如果您知道防止这种情况的方法,您将获得奖励积分:)
编辑
有些人建议使用大多数数据库都有的自动增量功能。这可行,但它会将我的应用程序绑定到我正在使用的特定数据库。因此,自动增量逻辑属于应用程序 imo。