2014-10-26 2 views
0

У меня есть таблица с Usersid, user_name, email, password столбцов по умолчанию, id является первичным ключом, то я поставил user_name и email являются униками. Я не знаю, будет ли несколько уникальных столбцов гарантировать, что значение в каждом столбце не дублируется, или значение уникальных столбцов не дублируется? Я имею в виду, какой случай правильности?Рубин на рельсы несколько уникальных столбцов

+0

Пожалуйста, вставьте код. – Esse

+0

'UNIQUE INDEX' гарантирует, что комбинация данных во всех включенных столбцах уникальна. Если у вас есть индекс с одним столбцом, это означает, что этот столбец будет иметь уникальные значения. Если у вас есть индекс с несколькими столбцами, это означает, что комбинация значений в этих столбцах будет уникальной. –

+0

Также я не вижу, как этот вопрос связан с Ruby или RoR. Узнайте свои вещи, люди. –

ответ

3

Есть два варианта здесь:

Установить уникальность каждой колонки по отдельности

validates :email, uniqueness: true 
validates :name, uniqueness: true 

поведение лучше всего объяснить примерами

| id | name | email | 
|–––––––––––––––––––––––| 
| 1 | Dave | [email protected] | 
| 2 | Dave | [email protected] | # invalid, as Dave is a duplicate 
| 3 | Mary | [email protected] | # valid, both values are unique 

Набор единственности в качестве область

validates :email, uniqueness: { scope: :name } 

Примеры

| id | name | email | 
|–––––––––––––––––––––––| 
| 1 | Dave | [email protected] | 
| 2 | Dave | [email protected] | # valid, as the combination of Dave & [email protected] is unique 
| 3 | Mary | [email protected] | # valid, both values are unique 
| 4 | Mary | [email protected] | # invalid, as the combination already exists 
+1

Спасибо вам большое! –

Смежные вопросы