9

有时,我需要查询数据库中的大量数据进行数据处理。

例如,我有一个表:Activity,我想找到上个月创建活动的所有用户,

我只关心数据数组,不想创建很多Activity模型,

有什么办法可以做到吗?

像这样的代码:

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

2 回答 2

17

试试这个方法:

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

我不确定 sql 查询,但我想你明白了。

于 2012-07-30T10:52:32.523 回答
0

尝试:

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

这将返回过去一个月为一组用户创建的所有活动。此查询的唯一潜在问题是数据集非常大。在运行此查询之前,您可能希望使用 named_scope 来缩小活动范围,这样它就不会搜索数据库中的每个活动。

于 2012-07-30T14:37:49.623 回答