有時,我需要在數據庫中查詢大量數據以進行數據處理。如何在Rails中查詢數據而無需創建模型?
例如,我有一個表:活動,我想找到所有建立在過去一個月的活動,我只關心數據陣列的用戶,
,我不希望創建很多活動模型,
有什麼辦法可以做到嗎?
這樣的代碼:
Activity.where('created_at > ?', Time.now - 1.month).get_data(:user_id, :created_at)
=> [[1, 2012-02-01] .... ]
有時,我需要在數據庫中查詢大量數據以進行數據處理。如何在Rails中查詢數據而無需創建模型?
例如,我有一個表:活動,我想找到所有建立在過去一個月的活動,我只關心數據陣列的用戶,
,我不希望創建很多活動模型,
有什麼辦法可以做到嗎?
這樣的代碼:
Activity.where('created_at > ?', Time.now - 1.month).get_data(:user_id, :created_at)
=> [[1, 2012-02-01] .... ]
試試這個辦法:
sql = "SELECT * from activities limit 10"
result = ActiveRecord::Base.connection.execute(sql)
result.to_a
我不知道有關SQL查詢,但我覺得你的想法。
它的工作原理!我現在提交代碼。 – linjunhalida 2012-11-12 15:33:19
嘗試:
Activity.where(['activities.user_id = ?
AND activities.created_at BETWEEN ?
AND ?', users, 1.month.ago, Time.zone.now])
這將返回所有已創建在過去的一個月爲一組用戶的活動。這個查詢唯一的潛在問題是數據集非常大。您可能希望在運行此查詢之前使用named_scope縮小活動範圍,以便它不會搜索數據庫中的每個活動。
我很困惑你的措辭。 「{你}不想創建活動模型」「我只關心數據數組」?不知道我明白。你爲什麼要通過查詢來創建模型? – Trip 2012-07-30 09:13:17
你是說你想用軌道條件查詢你的數據庫,但不想創建所有這些軌道模型? – Bornfree 2012-07-30 09:24:00
@Bornfree是的。我認爲這是一個非常普遍的情況。 – linjunhalida 2012-07-30 10:20:18