ruby-on-rails - id 列中的基值但限制为非空

标签 ruby-on-rails ruby postgresql

我想根据 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/

相关文章:

ruby-on-rails - 在 ruby​​ 中按 block 添加

node.js - 为什么不能将嵌套 JSON 数据 gps 作为未知类型插入?

postgresql - 如何引用在 ON CONFLICT 中使用函数的唯一索引?

windows - Postgres 9.0 linux命令到windows命令的转换

ruby-on-rails - 在 Rails 中使用关注点和模块有什么区别?

javascript - bootstrap3-datetimepicker-rails 显示问题

Ruby 类关联

ruby-on-rails - 如何让我的导航栏出现在我的 Rails 应用程序的每个页面上?

ruby - 尝试在 Synology DiskStation DS216j 上安装 Ruby gems,找不到 Ruby 头文件

ruby-on-rails - 使用 Rails 和 Twilio 发送短信