0

このようなコマンドラインから複雑な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 } );

私がやりたいことをしていないようです。

この問題を解決するために、どんなアプローチでも喜んで対応させていただきます。ActiveRecordDSL内からSQLを書き直すことさえできます。しかし、私は正しい方向を見つける助けが必要です。

ありがとう : )

4

1 に答える 1

0

ニシャントは私を解決策に導きました。

ActiveRecord::Base.connection.execute

クエリが次のように始まっただけで問題なく動作します。

select 'HIDDEN STRENGTHS';

したがって、execはセミコロンで終了しました。

ありがとう!

于 2013-01-23T16:20:48.620 に答える