我使用Rails 4。 我使用结构
@users = ActiveRecord::Base.connection.execute("SELECT * FROM users")
@users.each do |row| %>
puts user[0] # id--> 1,2,3,4,5,6
end
@users.fields do |field| %>
puts field.name # --> id, login, password.....
end
如何按列名显示数据? 例如
@users.first.field['id']
答案 0 :(得分:0)
ActiveRecord::Base.connection.execute(
将运行sql但不返回任何内容(或更准确地返回nil
)。要将记录加载到内存中
@users = User.all
你不能很好地描述你想要的东西。如果你真的想要" 1,2,3,4,5,6"你可以做到
@users.map(&:id).join(",")
例如,如果您想要一张表格,显示您可以执行的所有用户数据(在您的视图中)
<% cols = User.column_names %>
<table>
<thead>
<tr>
<% cols.each do |col| %>
<th><%= col %></th>
<% end %>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<% cols.each do |col| %>
<td><%= user.send(col) %></td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
就像我说的,我不知道这是不是你真正想做的事情。你的要求非常混乱,非常模糊。
修改强>
如果要在不使用AR模型的情况下从数据库中加载数据,则可以执行
@users = ActiveRecord::Base.connection.select_all("select * from users")
这会给你一系列像这样的哈希
[{"id" => "1", "name" => "foo", "bar" => "baz"}, {"id" => "2", "name" => "chunky", "bar" => "bacon"}, .... ]
然后您可以像
那样访问user = @users.first #you've got a hash now
aname = user["name"]