加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 独特的约束问题偏执狂宝石

发布时间:2020-12-17 02:26:04 所属栏目:百科 来源:网络整理
导读:我有一个rails应用程序,我正在使用设计和偏执宝石. 我在postgres db中有一个用户表,它在电子邮件列上有唯一的验证. 我使用偏执狂进行软删除,问题是当我删除用户然后使用已删除用户的电子邮件创建用户时它会抛出错误PG :: UniqueViolation:ERROR. 我已经读过
我有一个rails应用程序,我正在使用设计和偏执宝石.
我在postgres db中有一个用户表,它在电子邮件列上有唯一的验证.
我使用偏执狂进行软删除,问题是当我删除用户然后使用已删除用户的电子邮件创建用户时它会抛出错误PG :: UniqueViolation:ERROR.
我已经读过这个并且知道这可以使用rails的部分索引功能来解决.

http://scottsmerchek.com/2015/08/03/taking-the-d-out-of-crud/

https://devcenter.heroku.com/articles/postgresql-indexes#partial-indexes

我该如何实现?
对不起格式错误,从手机输入.

解决方法

由于您将用户删除为软删除,因此电子邮件未从数据库中删除,因此只有用户属性is_deleted设置为true.

要解决PG :: UniqueViolation:ERROR,您现在必须在字段电子邮件和deleted_at上创建唯一索引
所以你的迁移将是

class AddUniqueIndexToUsers < ActiveRecord::Migration
  def change
    remove_index :users,column: :email
    add_index :users,[:email,:deleted_at],unique: true
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读