2013-01-23 55 views
0

當我從這樣的獲取SQL查詢的結果字符串中的Rails

sqlite3 db/development.sqlite3 < queries.sql 

在命令行中運行復雜的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。但我需要幫助找到正確的方向。

謝謝:))

+0

queries.sql的內容是什麼?如果你可以從ActiveRecord運行它們,那不會有幫助嗎? – Nishant

回答

0

Nishant帶我到解決方案。

ActiveRecord::Base.connection.execute 

工作正常,它只是在查詢開始:

select 'HIDDEN STRENGTHS'; 

所以EXEC在分號結束。

謝謝!