2012-07-30 22 views
6

A veces, necesito consultar una gran cantidad de datos en DB para el procesamiento de datos.¿Cómo consultar datos sin crear modelo en Rails?

Por ejemplo, tengo una tabla: Actividad, quiero conocer todos los usuarios que crean la actividad en el último mes,

soy sólo se preocupa por los arreglos de datos, y no quiero crear muchos modelos de Actividad,

¿Hay alguna manera de hacerlo?

gusta este código:

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

Estoy confundido en su redacción. "{Usted} no desea crear modelos de actividad" "¿Solo me preocupan las matrices de datos"? No estoy seguro de comprender. ¿Por qué estarías creando modelos haciendo una consulta? – Trip

+0

¿Está diciendo que desea consultar su base de datos con condiciones similares a las de los rieles pero que no desea crear todos esos modelos de rieles? – Bornfree

+0

@Bornfree Sí. Creo que es un escenario muy común. – linjunhalida

Respuesta

6

probar este enfoque:

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

No estoy seguro acerca de consulta SQL, pero creo que se entiende la idea.

+0

¡Funciona! Actualizo el código ahora. – linjunhalida

0

Probar:

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

Esto devolverá todas las actividades que se han creado durante el mes pasado para un conjunto de usuarios. El único problema potencial con esta consulta es con conjuntos de datos extremadamente grandes. Es posible que desee utilizar un named_scope para restringir las actividades antes de ejecutar esta consulta para que no busque sobre todas las actividades en el db.

Cuestiones relacionadas