2009-04-25 2 views
2

У меня есть три модели: листинг, категория и сайт. Существует много-много отношений между листингом и сайтом, и между списком и категорией существует много-много отношений. Таким образом, листинг относится к одному или нескольким сайтам и одной или нескольким категориям (листинг может отображаться на нескольких сайтах и ​​нескольких категориях).Rails has_and_belongs_to_many присоединиться к 3 таблицам

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

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

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

ответ

0

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

 
class Assignment :assignments 
    end 
    class Project :assignments 
    end 

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

Приветствия и удачи.

[1]: help? Rails: has_many :through or has_many_and_belongs_to?

Смежные вопросы