Как перебирать имена столбцов из результатов выполнения sql - PullRequest
0 голосов
/ 04 ноября 2010

Я пытаюсь перебрать каждое имя столбца из моих результатов, чтобы поместить его в первый ряд моего представления. Я использую способ SQL для выполнения запросов к базе данных.

Я до сих пор получил это, но он не выводит то, что мне нужно:

<% for columns in @results %>
  <tr>
    <% @results.each do |column, value| %>
      <td><%= column %></td>
    <% end %>
  </tr>
<% end %>

Ответы [ 2 ]

3 голосов
/ 31 мая 2013

Для людей, пришедших сюда через 2,5 года после того, как меня спросили, я смог сделать это с помощью Rails 3.2.13 и Ruby 1.9.3-p194:

result=ActiveRecord::Base.connection.select_all("SELECT id AS 'user_id', first_name AS 'name' FROM users LIMIT 1")
result.each do |row|
  row.each do |k, v|
    puts "column #{k} contains #{v}"
  end
end

Результат:

column user_id contains 1
column name contains Me
[{"user_id"=>1, "name"=>"Me"}]

Доступ к нему:

result.first["user_id"]

И если есть 3 результата, и вы хотите получить 2-й:

result[1]["user_id"]
0 голосов
/ 04 ноября 2010

Поиск: MySQL / Ruby (http://www.tmtm.org/en/mysql/ruby/), если вы выполняете итерацию базы данных MySQL. Другие базы данных, посмотрите другие драйверы. Если говорить только о MySQL / Ruby, то возвращается Mysql::Result.

Вы повторяете это, используя each_hash, и блок возвращает хеш для строки. Затем вы можете перебрать хеш, используя each_pair. E.g.:

result = MyModel.connection.execute('select * from foos')
result.each_hash do |row|
  row.each_pair do |k, v|
    puts "column #{k} contains #{v}"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...