我正在努力解决这个问题:
我有一个User
带有电子邮件和辅助电子邮件的模型,他们可以用来登录。用户不应与其他用户拥有相同的电子邮件/辅助电子邮件。两列也应该是相互唯一的。
发生了什么
但是,我的索引仅验证它们自己列中的唯一性。因此,一个用户不能拥有与另一个用户相同的电子邮件,他们也不能拥有与另一个辅助电子邮件相同的辅助电子邮件。
确保两列各自唯一的索引,并为电子邮件和辅助电子邮件添加唯一索引
期待什么
用户不应将数据库中存在的电子邮件用作电子邮件或辅助电子邮件。
migration.rb
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :email, null: false
t.string :secondary_email
t.timestamps
end
add_index :users, [:email, :secondary_email], unique: true
add_index :users, [:secondary_email, :email], unique: true
add_index :users, :secondary_email, unique: true
add_index :users, :email, unique: true
end
end
我已经尝试了索引排列的所有组合。如果没有底部的单个索引,用户可以拥有相同email
的 s,只要他们secondary_email
的 s 是唯一的。