gpt4 book ai didi

ruby-on-rails - 生成唯一的顺序 id

转载 作者:行者123 更新时间:2023-12-02 17:22:54 27 4
gpt4 key购买 nike

如何在每次创建记录时生成唯一的顺序 ID(遵循某种模式)?如何解决并发问题?

我希望此 ID 遵循固定模式。例如:ABC00001、ABC00002、ABC00003 等

我这样做是为了生成学生 ID,我希望学院内的学生 ID 是连续的。将有多个机构使用我的工具。

最佳答案

如果您使用的是事件记录,那么默认情况下已经创建了一个唯一的顺序 ID (id) 并为您处理所有并发问题。如果您需要将它用于查询,那么一个单独的列可能是前进的方向,但如果您只需要以某种格式显示它,您可以简单地在您的模型上定义一个方法,例如:

class MyModel
def my_unique_id
"ABC%.5d" % id
end
end

test = MyModel.create
test.id #=> 1
test.my_unique_id #=> "ABC00001"

test2 = MyModel.create
test2.id #=> 2
test2.my_unique_id #=> "ABC00002"

编辑

啊,您没有提到您需要标识符在 Institute 中是连续的。你在使用 PostgreSQL 吗?如果是 sequenced gem可能是个不错的选择——它添加了一个 acts_as_sequence 方法,允许您这样做:

class Student
acts_as_sequenced scope: :institute_id, column: :sequential_id
#...
end

如果您不使用 PostgreSQL,则需要在您选择的数据库系统中找到一种处理并发锁的方法,因为该 gem 仅适用于 postgres(有关如何操作,请参见 here)。

关于ruby-on-rails - 生成唯一的顺序 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246086/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com