Родные братья ActiveRecord в отношениях многих ко многим - PullRequest
0 голосов
/ 04 августа 2010

У меня это до некоторой степени работает, но я ищу информацию о том, как запросить братьев и сестер в отношении один ко многим, чтобы посмотреть, есть ли более элегантный способ сделать это.

Рассмотрим следующие классы

class Post < ActiveRecord::Base
  has_many :post_categories
  has_many :categories, :through => :post_categories
end


class Category < ActiveRecord::Base
  has_many :post_categories
  has_many :posts, :through => :post_categories
end

Пост по определению может иметь несколько категорий, для чего мне нужно, чтобы на сайте отображалась область «связанных постов». Как я упоминал ранее, у меня есть рабочая версия, которая просто делает следующее:

Post.find(id, :include => {:categories => :posts})

При просмотре журналов приложение должно выполнить пять запросов, чтобы получить конечные данные, которые я ищу.

Любые мысли приветствуются!

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Единственная проблема, которую я вижу у вас с тем, что у вас уже есть, заключается в том, что вы, вероятно, не хотите возвращать все сообщения, которые разделяют категорию с сообщением.посты первые, т.е.те, которые имеют наиболее общие категории, и вы можете добавить ограничение или разбить на страницы для ограничения возвращаемых результатов.

0 голосов
/ 04 августа 2010

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

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