我想根据 ActiveRecord 分配给我的记录的数据库 ID 在列中生成一个值。通常,我会在生成此值并将其保存到数据库的地方添加一个保存后回调。
不幸的是,我必须处理该列的非空约束,因此需要在获取 ID 时同时对其进行分配。有没有一种线程安全的方法可以将两者结合起来?
最佳答案
您可以在事务 block 中编写代码,首先在给定表中找到 id 列的最大值,然后使用该 ID 值生成其他列的值。这对你有用吗?
ActiveRecord::Base.transaction do
id = maximum(:id)
other_column = "#{id} some string"
create(other_column: other_column)
end
关于ruby-on-rails - id 列中的基值但限制为非空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32729634/