如何从特定数字开始编号列?
问题描述:
我需要生成一个唯一的递增数字,它将成为更复杂的发票号码的一部分。我想保持应用程序中的增量逻辑。如何从特定数字开始编号列?
我必须恢复当前正在其他系统上进行编号。
我打算做Model.maximum(:custom_number).next
但我怎么能开始从给定数量的custom_number
列?
答
如果我理解你的问题,你只需要重置表(模型)的主键索引到你想要的数字。
如果你正在使用MySQL或PostgreSQL则:
ALTER SEQUENCE tablename_id_seq RESTART WITH 1453;
那么接下来的记录将在这种情况下,对指数的1453
要访问数据库控制台只是你的控制台上运行轨道分贝
EDIT
before_filter :check_invoice_number
def check_invoice_number
self.invoice_column = Model.last.invoice_column + 1
end
Ť小费的小费。但是我没有在这里使用id列,而是一个'invoice_number'列。对不起,如果不明确。 – DoeJ
那么,对于SQL数据库,每个表只能有一个自动增量列,所以也许您可以在Rails模型上执行** before_create **,以便您可以检查上次存储的记录并对发票列执行+1操作 查看我编辑的评论 – Makarov
@DoeJ除了您的invoice_number列,您还有一个ID列吗?没有什么可以阻止您使用invoice_number代替ID,如果这样可以让您和您的用户更清楚。 – MarsAtomic