2012-07-30 6 views
6

時には、データ処理のためにDB内の多くのデータを照会する必要があります。Railsでモデルを作成せずにデータをクエリする方法は?

例えば、私はテーブルを持っている:活動を、私は先月にアクティビティを作成するすべてのユーザーを見つけたい、

私はデータ配列についての唯一の心配、そして私が作成したくありません多くのアクティビティモデル

私はそれを行う方法はありますか?このコードのよう

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

私はあなたの表現に混乱しています。 "{あなたは}アクティビティモデルを作成したくありません" "私はデータ配列だけを心配しています"わかりません。なぜあなたはクエリを実行してモデルを作成していますか? – Trip

+0

あなたはレールのような条件であなたのDBをクエリしたいが、すべてのレールモデルを作成したくないと言っていますか? – Bornfree

+0

@Bornfreeはい。私はそれが非常に一般的なシナリオだと思う。 – linjunhalida

答えて

6

は、このアプローチを試してみてください:

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

私はSQLクエリについてはよく分からないが、私はあなたのアイデアを得ると思います。

+0

それは動作します!私は今現在のコードです。 – linjunhalida

0

試してみてください。

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

これは、ユーザの集合のために、過去の月の上に作成されている活動のすべてを返します。このクエリの唯一の潜在的な問題は、非常に大きなデータセットの問題です。このクエリーを実行する前にnamed_scopeを使用してアクティビティを絞り込み、db内のすべてのアクティビティを検索しないようにすることもできます。

関連する問題