2016-04-28 62 views
2

我的目標是將我的主動記錄搜索的結果打印到一個不錯的數組中,但打印部分是我遇到問題的地方。Ruby主動記錄結果數組

我首先用以下獨立工作的方式構建我的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 

而且這裏是我要問的問題的一部分。我想將返回的查詢結果傳遞給二維數組。以下是我目前必須執行的活動連接查詢。

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天,所以更好的行爲將更受讚賞 –