Как грамотно вытащить Хэш с данными из таблицы DB SQLite?

[А] Александр Маркин, 6 декабря 2017, 16:02 , 2 подписчика

Я не совсем понимаю:

Почему в Хеше из базы данных мне приходят "задвоенные" параметры?

>result = db.execute('SELECT * FROM people WHERE company_id = ?',id)    
>puts result.to_s
=> {"name"=>"А", "family_name"=>"Б", "phone"=>2, "email"=>"mail@mail.ru", "birthday"=>"23.23.1923", "company_id"=>1, 0=>"A", 1=>"Б", 2=>2, 3=>"mail@mail.ru", 4=>"23.23.1923", 5=>1}

Как сформировать запрос в базу данных, чтобы можно было достучаться через вложенные блоки к value и вывести его через key?

result.each do |line|

  line.each_pair do |key,value|

   printf value if key == 'name'

   .

   .

   .

  end

end

Помогите, пожалуйста. Или направьте на путь истинный. Заранее спасибо.

PS: решил немного усложнить домашнюю 12-1 и ... усложнил =)

PPS: на всякий случай Gihub

PPPS: Второй кусок кода не хотел упорно обрамляться, так что за оформление сорри.

Обсуждение (4)


Michael Butlitsky Учитель

[M]

Это фишка гема sqlite насколько понимаю.

{"name"=>"А", "family_name"=>"Б", "phone"=>2, "email"=>"mail@mail.ru", "birthday"=>"23.23.1923", "company_id"=>1, 0=>"A", 1=>"Б", 2=>2, 3=>"mail@mail.ru", 4=>"23.23.1923", 5=>1} 

Так вы можете и через именнованные параметры достать hash['name'] и по порядку как в массиве hash[0].

Я не совсем понял вопрос, зачем вам какие-то вложенные ключи и пр.? Вот же доступны все результаты строчкой выше, хотите по имени ключа доставайте, хотите по индексу.

Опционально можно именнованные результаты отключить: https://stackoverflow.com/a/31993564


Michael Butlitsky Учитель

[M]

ПОжалуйста пользуйтесь тремя "тиками" для разметки кода (посмотрите как я обновил ваш пост) и оставляйте пустые строки ДО и ПОСЛЕ блока с кодом.

Символ гравис называется https://habrahabr.ru/post/25531/


Александр Маркин

[А]

С оформлением - понял, спасибо (думал это точки). С Программой разобрался. Просто я устал и непонятно что делал. Сегодня повторил то что хотел - получилось. Спасибо. Вопрос можно удалять. Кстати за статью спасибо! Нашел ответ на давний вопрос. =)


Michael Butlitsky Учитель

[M]

Не надо удалять, другим полезно будет )