Как Вы проверяете уникальность пары идентификаторов в Ruby on Rails?

bool (*fptr)();

int main(void)
{
  ...
  ...
  printf("Enter your choice");
  scanf("%d",&a);
  switch(a)
{
  case 0:
         fptr = A;
         break;
  case 1:
         fptr = B;
         break;
  case 2:
         fptr = C;
         break;
  case 3:
          break;
}
(*fptr)();
return 0;
}

ваш выбор сохраняется в; Затем, соответственно, функции назначаются в указателе функции. Наконец, в зависимости от вашего выбора вызывается та же самая функция, чтобы вернуть желаемый результат.

50
задан dfrankow 28 May 2009 в 12:59
поделиться

3 ответа

validates_uniqueness_of :user_id, :scope => [:question_id]

, если вам нужно было добавить еще один столбец. (или больше), вы также можете добавить это в область видимости. Пример:

validates_uniqueness_of :user_id, :scope => [:question_id, :some_third_column]
89
ответ дан 7 November 2019 в 10:32
поделиться

За исключением написания собственного метода проверки, Лучшее, что вы можете сделать с validates_uniqueness_of , это:

validates_uniqueness_of :user_id, :scope => "question_id"

Это позволит проверить, что user_id уникален во всех строках с тем же question_id, что и запись, которую вы пытаетесь вставить.

Но это не то, что вам нужно .

Я полагаю, вы ищете комбинацию : user_id и : question_id , чтобы она была уникальной для всей базы данных.

В этом случае вам нужно сделать две вещи:

  1. Напишите свой собственный метод проверки.
  2. Создайте ограничение в базе данных потому что еще есть шанс, что ваше приложение обработает две записи в в то же время.
10
ответ дан 7 November 2019 в 10:32
поделиться

Если вы используете mysql, вы можете сделать это в базе данных, используя уникальный индекс. Это что-то вроде:

add_index :question_votes, [:question_id, :user_id], :unique => true

Это вызовет исключение, когда вы попытаетесь сохранить удвоенную комбинацию question_id / user_id, поэтому вам придется поэкспериментировать и выяснить, какое исключение нужно перехватывать и обрабатывать.

25
ответ дан 7 November 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: