2012-07-24 10 views
5

Próbowałem wszystkiego, co myślałem, że nadrobi się do tego i nic nie powstanie.Zakres rails i dołącza

w szynach 3, muszę znaleźć wszystkich użytkowników z odtwarzaczem CD w samochodzie. Samochód ma jednego użytkownika i jedno radio, a użytkownik należy do samochodu, a radio ma wiele samochodów.

Zastanawiam się, w jaki sposób wykonać to wyszukiwanie za pomocą zakresu w modelu użytkownika.

class User 
    belongs_to :car 

class Car 
    belongs_to radio 
    has_one :user, :dependent => destroy 

class Radio 
    has_many :cars 
+0

Powinieneś powiedzieć, jak wygląda twój schemat bazy danych, jeśli chcesz uzyskać pomoc. –

+0

_ "użytkownik należy do samochodu, a radio ma wiele samochodów" _ jest to dziwny model. Czy możesz pokazać kod? – alf

Odpowiedz

11

jestem przy założeniu, że masz na myśli to: samochód ma radio_id, Użytkownik ma car_id, ponieważ radio ma wiele samochodów i samochód ma jednego użytkownika. Tabela z kluczem obcym zawsze znajduje się na końcu belongs_to związku.

nie znając strukturę, której szukasz, coś jak następujące powinny działać:

scope :with_cd_player, joins(:cars).where('cars.radio_id is not null') 

jeśli istnieje kolumna kategoria w radiu, następujące będzie działać.

scope :with_cd_player, joins(:car => :radio).where('cars.radio_id is not null').where("radios.category = 'cd_player'") 
+0

dziękuję! to dokładnie to, czego szukałem. –