2012-07-24 37 views
5

Tôi đã thử tất cả mọi thứ tôi nghĩ rằng sẽ làm việc cho điều này và sáng không có gì.phạm vi đường ray và tham gia

trong đường ray 3, tôi cần tìm tất cả người dùng có trình phát cd trong ô tô của họ. Một chiếc xe có một người sử dụng và một đài phát thanh, và một người sử dụng thuộc về một chiếc xe hơi, và một đài phát thanh có nhiều xe hơi.

Tôi đang vấp phải cách tôi thực hiện tìm kiếm này thông qua phạm vi trong mô hình người dùng.

class User 
    belongs_to :car 

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

class Radio 
    has_many :cars 
+0

Bạn nên biết lược đồ cơ sở dữ liệu của mình trông như thế nào nếu bạn muốn nhận trợ giúp. –

+0

_ "một người dùng thuộc về một chiếc xe hơi, và một đài phát thanh có nhiều chiếc xe" _ đây là một mô hình kỳ lạ. Bạn có thể hiển thị một số mã không? – alf

Trả lời

11

Tôi giả định rằng bạn có ý nghĩa này: xe có radio_id, Người dùng có car_id, từ một đài phát thanh có nhiều ô tô và xe có một người sử dụng. Bảng với khóa ngoại luôn nằm trên phần cuối của mối quan hệ.

Nếu không thực sự biết cấu trúc bạn đang tìm kiếm, giống như sau nên làm việc:

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

nếu có một cột mục trên đài phát thanh, sau đây sẽ làm việc.

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

cảm ơn bạn! thats chính xác những gì tôi đang tìm kiếm. –

Các vấn đề liên quan