Выбор с использованием MySQL показывает Mysql :: Result, а не мое значение - PullRequest
2 голосов
/ 03 мая 2011

Я пытаюсь создать простую систему аутентификации пользователей из командной строки в Ruby.
Я использую MySQL для хранения информации о пользователе.
Я решил хранить пароли как хеши MD5, в основном потому, что это просто.
Я сейчас не собираюсь ничего сумасшедшего в безопасности, я просто хочу, чтобы это сработало.
Однако, когда я использую оператор выбора в Ruby, чтобы вытащить хеш, чтобы я мог сравнить его с хешем того, что пользователь ввел, он не выходит в том же формате из 32 символов!

Когда я использую MySQL для выбора хеша, я получаю:

 SELECT password FROM users WHERE username = 'admin';
 +----------------------------------+
 | password                         |
 +----------------------------------+
 | d456c1f6fa85ed2f6a26b15139c6ddc2 |
 +----------------------------------+

Когда я использую Ruby, однако ..

 con.query("SELECT password FROM users WHERE username = 'admin'")
 #<Mysql::Result:0x950b208>

Я никогда раньше ничего не программировал, и мне действительно нравится Ruby.
Я уже два дня гуглю это и, похоже, ничего не могу найти.
Извините, если это действительно легко исправить, но я не могу найти его где-либо.
Я также хотел бы предложения о лучшем способе пойти об этом маленьком проекте! Заранее спасибо:)

Ответы [ 2 ]

4 голосов
/ 03 мая 2011

Похоже, вам нужно просто обработать результаты запроса.Возвращаемое значение query является объектом набора результатов:

rows = con.query("SELECT password FROM employee WHERE username = 'admin'")
rows.each do |row|
   puts row[0]
end
0 голосов
/ 03 мая 2011

Попробуйте

rows.map(&:password) 

это тоже должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...