Как выполнить AR-запрос для нескольких объектов - PullRequest
1 голос
/ 19 ноября 2011

У меня есть 2 разные (ActiveRecord) модели. Предположим, они называются Comment и Activity. У них совершенно разные атрибуты и методы. Также они оба связаны с другими моделями, такими как, например, Project.

Я хочу определить метод в модели Project, чтобы я мог сделать что-то вроде:

Project.first.stream

Это возвратит упорядоченную коллекцию (например, основанную на дате создания базовой модели) всех комментариев и действий, связанных с этим конкретным проектом.

Я могу получить комментарии и действия отдельно, а затем упорядочить их в памяти, но, поскольку количество записей быстро увеличивается, это не кажется хорошим решением.

Может кто-нибудь показать мне, как это может быть сделано таким образом, что это приведет к хорошей производительности и минимуму хлопот.

Спасибо!

1 Ответ

0 голосов
/ 19 ноября 2011

Просто чтобы проверить, вы хотите сделать эквивалент:

def stream
  (comments + activities).sort_by(&:created_at)
end

... но в AR?

Хороший вопрос: -)

Как комментарии и действия связаны с проектом? Возможно, проще всего было бы реорганизовать ваши ассоциации, чтобы иметь полиморфный тип «Присоединение», чтобы вы могли иметь AttachedComment и AttachedActivity, и все они были бы доступны через коллекцию «attachments».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...