2016-04-28 10 views
2

私の目的は、私のactiverecord検索の結果を素敵な配列に印刷することですが、印刷の部分は問題が発生している場所です。Rubyのactiverecordの配列への結果

私は最初にoracle接続を次のものと孤立して構築します。

def oracle_connection(adapter, database, username, password) 
    begin 
     ActiveRecord::Base.establish_connection(
      adapter: adapter, 
      database: database, 
      username: username, 
      password: password) 
    end 
    end 

私は、次の関数と私のクエリを作成します。

def query 
     "select * from owner.appn where appn_id = #{$id}" 
end 

そして、ここでは、私は上の質問をしています一部です。私は返されたクエリの結果を2D配列に渡したいと思います。私は現在、アクティブな接続クエリを実行する必要があります。

def oracle_query_into_array(query) 
    result_set = ActiveRecord::Base.connection.execute(query) 
    if result_set.present? 
#add logic here 
    else 
     return nil 
    end 
    end 

おかげ

答えて

1

私はあなたではなく一般的な方法です抽象化よりも基になる接続呼び出しを使用する理由があると仮定しています。

ActiveRecord::Base.connection.execute(query)私はこれが実行されるとtrueを返すと期待します。何が欲しいのは、データ上のカーソルであるので、これを試してみてください。

result = ActiveRecord::Base.connection.exec_query(query) 
puts result.to_a 
=> [array of results] 

通常の抽象化(ActiveRecord::Base)、これは次のようになり、あなたのケースではので、あなたのデータを表現するモデルを作成する形を取ります。

class Appn < ActiveRecord::Base 
end 

この

は自動的に上記のコードを更新することができAppnnと呼ばれるあなたの接続内のテーブルにマップされます:返信用

results = Appn.where(appn_id: $id) 
puts results.to_a 
=> [array of results] 
+0

感謝を。上記の文脈で接続呼び出しで抽象化がどのように機能するかの例を私に与えるためにあなたの応答を編集できますか?これは私のRubyの3日目ですので、より良い振る舞いをすることがより高く評価されます –

関連する問題