В моем приложении две модели: заметки и основные моменты.Они определены как:
class Note < ActiveRecord::Base
belongs_to :user
end
class Highlight < ActiveRecord::Base
has_and_belongs_to_many :users
end
Теперь я хочу, чтобы оба были доступны в одном потоке, отсортированы по дате создания.Я не мог обдумать, как это сделать в ActiveRecord, поэтому я собрал этот запрос:
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
Добавить, конечно, это работает, но не очень Rails-у.Кроме того, я не знаю, как определить, какие элементы являются заметками, а какие основными моментами.Другой вариант - получить поток заметок и выделить потоки отдельно, а затем объединить массивы.Это также кажется неуклюжим, и я чувствую, что где-то должна быть абстракция для того, что я пытаюсь сделать.
Есть ли какая-то ключевая функциональность ActiveRecord, которую я здесь упускаю?Какой самый эффективный способ сделать это?