Rails has_and_belongs_to_many объединяет 3 таблицы

У меня есть три модели: листинг, категория и сайт. Между листингом и сайтом существует взаимосвязь «многие ко многим», а между листингом и категорией существует взаимосвязь «многие ко многим». Таким образом, объявление принадлежит одному или нескольким сайтам и одной или нескольким категориям (список может отображаться на нескольких сайтах и ​​в нескольких категориях).

Учитывая идентификатор сайта и идентификатор категории, мне нужен набор всех списков. Я понимаю, как получить списки из идентификатора сайта (listings = site.listings) и как получить списки из идентификатора категории (listings = category.listings), но как мне получить тройное соединение набора списков из как идентификатор сайта, так и идентификатор категории?

Sql будет выглядеть примерно так (вводятся sit_id и cat_id): выберите l.name из списков l, category_listings cl, listings_sites, ls, где cl.category_id = cat_id и ls.site_id = sit_id и cl.listing_id = l.id и ls .listing_id = l.id

заранее спасибо


person Birdman    schedule 25.04.2009    source источник


Ответы (1)


Возможно, вам потребуется выполнить has_many: through и определить таблицы соединения в модели, указав own_to для родительских таблиц.

 class Assignment  :assignments
  end
  class Project  :assignments
  end

Эта [ссылка] [1] также может помочь.

Ура и удачи.

[1]: помощь? Rails: has_many: through или has_many_and_belongs_to?

person Nazar    schedule 25.04.2009