Tengo dos modelos en mi aplicación, notas y aspectos más destacados. Se definen como:SQL UNION con Rails ActiveRecord
class Note < ActiveRecord::Base
belongs_to :user
end
class Highlight < ActiveRecord::Base
has_and_belongs_to_many :users
end
Ahora, deseo que ambos sean accesibles en la misma secuencia, ordenados por fecha de creación. No podía hacerme a la manera de hacer esto en ActiveRecord, así que armar esta consulta:
SELECT book_id, page, content, created_at FROM `highlights`
INNER JOIN `highlights_users` ON `highlights`.id = `highlights_users`.highlight_id
WHERE (`highlights_users`.user_id = 1)
UNION SELECT book_id, page, content, created_at FROM notes
ORDER BY created_at DESC
Agregar por supuesto, funciona, pero no se siente muy Carriles-y. Además, no sé cómo decir qué elementos son notas y cuáles son destacados. La otra opción es obtener la secuencia de notas y resaltar las secuencias por separado, luego fusionar las matrices. Eso también parece torpe, y siento que debe haber una abstracción en alguna parte para lo que estoy tratando de hacer.
¿Hay alguna funcionalidad clave de ActiveRecord que me falta aquí? ¿Cuál es la forma más eficiente de hacerlo?
me había olvidado de las ITS. Tienes razón, parece exactamente lo que necesito. ¡Gracias! –