Какой запрос я бы использовал для прохождения нескольких уровней зависимостей? - PullRequest
0 голосов
/ 22 января 2012

После DBStructure:

App
   has_many :app_versions

AppVersion
  has_many :found_items
  has_many :items, through => :found_items

FoundItem
  belongs_to :app_version
  belongs_to :item

Item
   has_many :found_items
   has_many :app_versions, through => :found_items

Я хочу получить все Apps, которые включают Item. Я не знаю, как запросить эту схему, чтобы получить результаты, поскольку существует так много уровней.

Я могу сделать это следующим образом:

apps = []
item.app_versions.each {|av| apps << av.app} => takes lots of database queries
apps.uniq!

updated version:
item.app_versions.find(:all, :include => :app).each {|av| apps << av.app} 
apps.uniq!
//Not so many queries

Кто-то указатель?

1 Ответ

0 голосов
/ 22 января 2012
App.joins(:app_versions => :items).where(:items => { :id => item.id})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...