id上的列中的基值,但约束为非null

时间:2015-09-23 01:32:31

标签: ruby-on-rails ruby postgresql

我想根据ActiveRecord分配给我的记录的数据库ID在列中生成一个值。通常情况下,我只会添加一个保存后的回调函数,其中生成此值并保存到数据库中。

不幸的是,我必须在该列上处理非空约束,因此需要在获取ID时同时分配它。是否有一种线程安全的方式,将两者结合起来?

1 个答案:

答案 0 :(得分:0)

您可以在事务块中编写代码,首先在给定表中找到 id 列的最大值,然后使用该ID值生成其他列的值。这对你有用吗?

ActiveRecord::Base.transaction do
  id = maximum(:id)
  other_column = "#{id} some string"
  create(other_column: other_column)
end