2013-12-09 6 views
0

У меня есть таблица, именуемая пользователями, которая имеет уникальное имя пользователя и имеет 4 вопроса относительно каждого имени пользователя, которое они ответили во время регистрации, сохраненной в базе данных mysql. то, что я хочу сделать, это сделать двухэтапную регистрационную форму, в которой человек сначала вводит имя пользователя и пароль, а затем один раз нажимает кнопку «Отправить», чтобы получить один из вопросов из базы данных, на который пользователь ответил, и предоставить его в качестве входа второго шага. Этот второй вопрос, который я хочу, следует воспринимать наугад. Плюс я хочу отслеживать количество неправильных попыток. Но я застрял на втором шаге, как получить случайный и проверить неправильные попытки входа в систему. Нужна небольшая помощь. Я использую mysql как backend и работаю с RoR. Мой стол выглядит так:получить случайное значение от mysql

Members 
{ username 
password 
question1 
question2 
question3 
question4 
answer1 
answer2 
answer3 
answer4 } 

И все поля являются строками!

+0

Вы можете указать случайное имя столбца из части RoR в mysql ?? Идея вроде, добавьте все имя столбца в массив и используйте для перетасовки и получите случайное имя столбца из RoR-кода и передайте это значение в запрос mysql. –

+0

У меня есть имя пользователя из первой части входа в систему, и я хочу получить случайный вопрос из базы данных для второй части в соответствии с именем пользователя, а также проверить ответ @ user876345 – user9517536248

+0

Вы можете передавать имя пользователя всегда вместе со случайными столбцами вопроса? –

ответ

0

следующий код генерирует случайное число (100 - 500):

FLOOR(RAND() * 401) + 100 

В общем случае FLOOR(RAND() * (<max> - <min> + 1)) + <min> генерирует число между включительно.

+0

, но я хочу случайный вопрос, который нужно принять в соответствии с моим именем пользователя из базы данных, а не просто случайное число @zaheer – user9517536248

0

, если вам нужно случайным образом выбрать одно из полей вопроса, доступ к атрибуту, как например:

self.send("question#{(1..4).to_a.sample}") 

где самость экземпляр члена.

Если вам нужно сделать то же самое для «ответа», что, скорее всего, так как вам придется проверять запись пользователя, то это подходит к более полной реализации.

my_random = (1..4).to_a.sample 
fail_count = 0 
question = self.send("question#{my_random}") #display to user 
if user_reply == self.send("answer#{my_random}") #validate against user's reply 
    p 'success' 
else 
    fail_count += 1 
end 
+0

Что делает .send? отправляет данные туда, где? я полагаю, что вы пытаетесь разместить этот код в моей модели или представлении или контроллере? – user9517536248

+0

'send' преобразует строку в вызов метода в вашем экземпляре. см. http://ruby-doc.org/core-2.0.0/Object.html#method-i-send для получения дополнительной информации. – blotto

+0

обновлен для лучшего примера того, как его использовать, а для того, где разместить это, вам нужно будет узнать, какой вопрос отображать, когда ваша форма отобразится, поэтому ваше действие входа в ваш контроллер должно решить какой вопрос. после того, как пользователь отправит вас, вы можете подтвердить свой ответ тем, который был сохранен для этого пользователя. – blotto

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