添加索引和在Rails中添加唯一true的索引有什么区别

时间:2018-06-22 10:21:04

标签: ruby-on-rails

我有一个account_users表,该表具有account_id和user_id。所以我在数据库级别添加了一个索引来维护唯一记录

add_index :account_users, [:account_id, :user_id], unique: true

有时我会遇到这种情况,即使我确定我输入的是正确的帐户和用户组合,我的意思是不存在的记录

有时它神奇地起作用,有时我遇到以下错误 "ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint \"account_users_pkey\"\nDETAIL: Key (id)=(6) already exists.\n: INSERT INTO \"account_users\" (\"account_id\", \"user_id\", \"created_at\", \"updated_at\", \"common_role_id\", \"added_by_user_id\") VALUES ($1, $2, $3, $4, $5, $6) RETURNING \"id\"","duration":25.14,"view":0.0,"db":9.59}

我想知道unique: true是否是罪魁祸首。

1 个答案:

答案 0 :(得分:0)

唯一约束限制您在db表中添加任何重复的条目。因此,如果表中已经有任何重复的条目,则不会添加唯一约束。

您必须首先使其具有唯一性。