2009-04-25 6 views
2

Ich habe drei Modelle: Auflistung, Kategorie und Website. Es gibt eine viele zu viele Beziehung zwischen Listing und Site und es gibt eine viele zu viele Beziehung zwischen Listing und Kategorie. Ein Listing gehört somit zu einer oder mehreren Sites und einer oder mehreren Kategorien (ein Listing kann auf mehreren Sites und mehreren Kategorien erscheinen).Schienen has_and_belongs_to_many Join über 3 Tabellen

Angesichts einer Website-ID und einer Kategorie-ID, ich möchte eine Reihe von allen Auflistungen. Ich verstehe, wie man die Auflistungen von einer Aufstellungsort-Identifikation (Auflistungen = site.listings) erhält und wie man die Auflistungen von einer Kategorie Identifikation erhält (Auflistungen = category.listings), aber wie bekomme ich den Dreiergruppenbeitritt des Satzes Auflistungen von eine Site-ID und eine Kategorie-ID?

Die SQL würde in etwa so aussehen (sit_id und cat_id eingegeben werden): wählen l.name von Listings l, categories_listings cl, listings_sites, ls, wo cl.category_id = cat_id und ls.site_id = sit_id und cl.listing_id = l.id und ls.listing_id = l.id

Vielen Dank im Voraus

Antwort

0

Sie benötigen einen has_many zu tun: durch und definieren die Join-Tabellen in einem Modell durch eine belongs_to zu übergeordneten Tabellen angeben.

 
class Assignment :assignments 
    end 
    class Project :assignments 
    end 

Diese [link] [1] könnte auch helfen.

Prost und viel Glück.

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