在Rails中获取SQL Query的结果作为字符串

时间:2013-01-23 05:18:35

标签: sql ruby-on-rails join average rails-activerecord

当我从命令行运行一个复杂的SQL查询时,就像这样

sqlite3 db/development.sqlite3 < queries.sql

我得到这样的结果

Competency Name|Component Name|3.77|4.0|0.23
Another Competency Name|Another Component Name|3.77|4.0|0.23

我可以像这样轻松解析

hidden_strengh_strings = results.split("\n")[1..-1];
hidden_strengh_strings.each do |hidden_strength_string|
  hidden_strengh_values = hidden_strength_string.split("|");

  hidden_strength = {}
  hidden_strength.merge!(:competency => hidden_strengh_values[0]);
  hidden_strength.merge!(:component => hidden_strengh_values[1]);
  hidden_strength.merge!(:reviewer_average_score => hidden_strengh_values[2]);
  hidden_strength.merge!(:reviewee_average_score => hidden_strengh_values[3]);
  hidden_strength.merge!(:exceedance => hidden_strengh_values[4]);

  hidden_strengths << hidden_strength
end

但我不知道如何从ActiveRecord中获取这些结果。

results = ActiveRecord::Base.connection.execute(File.open(Rails.root.join('queries.sql'), 'r') { |f| f.read } );

似乎没有做我想要的。

我很乐意采取任何方法来解决这个问题。甚至从ActiveRecord DSL中重写sql。但我需要帮助找到正确的方向。

谢谢:)

1 个答案:

答案 0 :(得分:0)

Nishant引导我找到解决方案。

ActiveRecord::Base.connection.execute

只需查询以:

开头即可
select 'HIDDEN STRENGTHS';

所以exec以分号结束。

谢谢!