Для этого нет встроенных методов в ActiveRecord, очень просто сделать это в SQL. Просто выполните UNION.
SELECT * FROM (
SELECT table1.*, 'table_1_type' AS table_type FROM table1
UNION ALL SELECT table2.*, 'table_2_type' AS table_type FROM table2
UNION SELECT table3.*, 'table_3_type' AS table_type FROM table3
) AS my_union ORDER created_at DESC LIMIT 10;
Этот запрос возвращает 10 строк, каждая строка будет иметь таблицы от каждого из них. Я предлагаю вам создать простой класс Ruby, который выполняет этот необработанный запрос и перестраивает объекты. Или еще лучше просто получить нужные вам значения и представить их с помощью простых классов Ruby (не используя модели You).
Вы можете получить доступ к Postgres соединения через любой класс AR, как этот MyModelClass.connection
Пример использования сырого соединения:
conn = MyModelClass.connection
res = conn.exec('select tablename, tableowner from pg_tables')
res.each do |row|
row.each do |column|
puts column
end
end
В этом же образом можно выполнить Ваш запрос и заполнить объекты Ruby.
UPD
Существует также третий вариант можно использовать. Создайте новую модель RssItem и верните ее с представлением SQL вместо таблицы. Подход объясняется в этом посте:
http://hashrocket.com/blog/posts/sql-views-and-activerecord
Привет, спасибо за указывающей в этом направлении. Вариант использования заключается в том, что мне нужно получить записи базы данных для публикации в ленте RSS и вам нужно сравнить запись на основе времени создания для нескольких таблиц. –