ruby on rails上的原始sql返回关系

时间:2014-09-12 08:41:00

标签: sql ruby-on-rails

我想在rails上的ruby中使用原始sql来检索数据,以便更快地响应。 我用

 @test1=ActiveRecord::Base.connection.execute("select Unique Id from device_tables")

然后我测试它使用p标签在视图中显示它:

<p><%= @test1 %></p>

但不是给我数据,而是显示关系:

#<Mysql2::Result:0x00000008664948>

我想获取数据库的内容,将所有唯一ID存储在数组中。 我怎么能得到这个?谢谢你的推荐

2 个答案:

答案 0 :(得分:0)

您应该使用eachmap对其进行迭代,以便在视图中获得结果。您当前的对象如下所示:

#<Mysql2::Result:0xcd3dfe0 @query_options={:as=>:array, :async=>false, :cast_booleans=>false, :symbolize_keys=>false, :database_timezone=>:utc, :application_timezone=>nil, :cache_rows=>true, :connect_flags=>-2147442171, :cast=>true, :default_file=>nil, :default_group=>nil, :adapter=>"mysql2", :database=>"GetTravelTime_Development", :host=>"localhost", :pool=>5, :username=>"root", :password=>nil, :timeout=>5000, :flags=>2}> 

我在控制台上尝试过这样的单个和多个对象:

mysql_object = ActiveRecord::Base.connection.execute("select Unique Id from device_tables")
mysql_object.each{|object| puts object}
mysql_object.map{|object| puts object}

答案 1 :(得分:-3)

您可以尝试find_by_sql method.eg:

TableName.find_by_sql"select * from table_names"