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;
}
ваш выбор сохраняется в; Затем, соответственно, функции назначаются в указателе функции. Наконец, в зависимости от вашего выбора вызывается та же самая функция, чтобы вернуть желаемый результат.
validates_uniqueness_of :user_id, :scope => [:question_id]
, если вам нужно было добавить еще один столбец. (или больше), вы также можете добавить это в область видимости. Пример:
validates_uniqueness_of :user_id, :scope => [:question_id, :some_third_column]
За исключением написания собственного метода проверки, Лучшее, что вы можете сделать с validates_uniqueness_of
, это:
validates_uniqueness_of :user_id, :scope => "question_id"
Это позволит проверить, что user_id уникален во всех строках с тем же question_id, что и запись, которую вы пытаетесь вставить.
Но это не то, что вам нужно .
Я полагаю, вы ищете комбинацию : user_id
и : question_id
, чтобы она была уникальной для всей базы данных.
В этом случае вам нужно сделать две вещи:
Если вы используете mysql, вы можете сделать это в базе данных, используя уникальный индекс. Это что-то вроде:
add_index :question_votes, [:question_id, :user_id], :unique => true
Это вызовет исключение, когда вы попытаетесь сохранить удвоенную комбинацию question_id / user_id, поэтому вам придется поэкспериментировать и выяснить, какое исключение нужно перехватывать и обрабатывать.