2012-07-30 33 views
6

有時,我需要在數據庫中查詢大量數據以進行數據處理。如何在Rails中查詢數據而無需創建模型?

例如,我有一個表:活動,我想找到所有建立在過去一個月的活動,我只關心數據陣列的用戶,

,我不希望創建很多活動模型,

有什麼辦法可以做到嗎?

這樣的代碼:

Activity.where('created_at > ?', Time.now - 1.month).get_data(:user_id, :created_at) 
=> [[1, 2012-02-01] .... ] 
+1

我很困惑你的措辭。 「{你}不想創建活動模型」「我只關心數據數組」?不知道我明白。你爲什麼要通過查詢來創建模型? – Trip 2012-07-30 09:13:17

+0

你是說你想用軌道條件查詢你的數據庫,但不想創建所有這些軌道模型? – Bornfree 2012-07-30 09:24:00

+0

@Bornfree是的。我認爲這是一個非常普遍的情況。 – linjunhalida 2012-07-30 10:20:18

回答

6

試試這個辦法:

sql = "SELECT * from activities limit 10" 
result = ActiveRecord::Base.connection.execute(sql) 
result.to_a 

我不知道有關SQL查詢,但我覺得你的想法。

+0

它的工作原理!我現在提交代碼。 – linjunhalida 2012-11-12 15:33:19

0

嘗試:

Activity.where(['activities.user_id = ? 
       AND activities.created_at BETWEEN ? 
       AND ?', users, 1.month.ago, Time.zone.now]) 

這將返回所有已創建在過去的一個月爲一組用戶的活動。這個查詢唯一的潛在問題是數據集非常大。您可能希望在運行此查詢之前使用named_scope縮小活動範圍,以便它不會搜索數據庫中的每個活動。

相關問題