Доступ к значениям массива, возвращенным из SQL в Ruby - PullRequest
0 голосов
/ 23 октября 2011

Я уверен, что это очень просто, но я новичок в Ruby и, похоже, не могу найти ответ на очень простой вопрос.

У меня есть таблица со списком слов вPostgreSQL.Я получаю возвращаемое значение из запроса, чтобы получить количество строк.Когда я пытаюсь присвоить это возвращаемое значение переменной «wordcount», я не могу получить только целочисленное значение.Например, если я пытаюсь использовать wordcount (как показано ниже), Ruby выдает ошибку «не удается преобразовать массив в целое число (TypeError)».Короче говоря, как мне преобразовать значение, полученное в результате запроса, в целое число?Заранее спасибо.

q = 'SELECT COUNT(*) FROM words'
res  = conn.exec(q)
wordcount = res.values[0]
puts wordcount

Ответы [ 3 ]

1 голос
/ 23 октября 2011

Используя PostgreSQL (и, вероятно, большинство других коннекторов), это будет:

wordcount = res[0]["count"]

Вы уверены, что не хотите просто делать:

Word.count

хотя?

1 голос
/ 23 октября 2011

Метод exec возвращает экземпляр PGResult и PGResult#values:

Возвращает все кортежи в виде массива массивов.

Таким образом, ваш res является массивом массивов: одна запись для каждой строки в наборе результатов, и каждая запись сама будет массивом с одной записью на столбец. Они тоже струны, попробуйте это:

wordcount = res.getvalue(0, 0).to_i
puts wordcount
0 голосов
/ 23 октября 2011

Библиотека базы данных дает вам возвращаемое значение, которое поддерживает возврат нескольких строк.Вы, вероятно, получаете массив с одной строкой, содержащей массив с одним столбцом, который принимает ваше значение.

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