ruby-on-rails - 如何限制一个值在 Postgresql 的一列中最多出现一次?

标签 ruby-on-rails postgresql

如何将约束或唯一索引添加到 Staff 实体中的 position 列,以便值 master 最多出现一次,而其他值可以出现多次?

有可能吗?

我正在使用 Postgres 数据库、Ruby on Rails 和 schema.rb

最佳答案

我不确定 postgres 强制执行那种约束。另一种解决方案是按照以下方式在模型上设置自定义验证

class SomeModel
  validate :one_master_permitted

  private
  def one_master_permitted
    errors.add(:position, "some error message") if SomeModel.find_by(position: "master")
  end
end

关于ruby-on-rails - 如何限制一个值在 Postgresql 的一列中最多出现一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727592/

相关文章:

ruby-on-rails - 名称错误 : uninitialized constant Faker

mysql - 将我的 Rails 应用程序设置到 MySQL 数据库

ruby-on-rails - 如何在 rails 中进行外部连接

ruby-on-rails - 在 Rails 6.1 上使用咖啡装载机时出现 `this.getOptions is not a function` 错误

sql - 也许您需要不同的 "datestyle"设置

postgresql - 如何从 Postgres jsonb 对象中删除一组键?

ruby-on-rails - rails : How to quickly secure entire site for development testing on Heroku?

sql - 对WITH 子句中的表使用 INTERSECT

postgresql - Heroku 页面 :backups fails with "an error"

sql - 错误 : query has no destination for result data