2012-07-24 4 views
5

私はこれでうまくいくと思ったことを何度も試み、何も旋回していません。レールのスコープと結合

(レール3)、私は自分の車にCDプレーヤーを持つすべてのユーザーを見つける必要があります。自動車は1人のユーザと1人のラジオを有し、ユーザは車に属し、ラジオは多くの自動車を有する。

私はこの検索をユーザーモデルのスコープを介してどのように実行するのかつまらないです。

class User 
    belongs_to :car 

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

class Radio 
    has_many :cars 
+0

ヘルプを表示するには、データベーススキーマの外観を教えてください。 –

+0

_「ユーザーは車に属し、ラジオには多くの車があります」_これは奇妙なモデルです。いくつかのコードを表示できますか? – alf

答えて

11

私はあなたがこれを意味することを想定しています:ラジオは、多くの車と車を持っているので、ユーザーが1人のユーザーを持っているcar_id、 を持って、 車はradio_idを持っています。外部キーを持つテーブルは常に関係のbelongs_toの終わりにあります。

本当にあなたが探している構造を知らなくても、次のようなものが動作するはずです:

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

をラジオのカテゴリ欄がある場合は、次のように動作します。

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

ありがとうございます!正確に私が探していたものです。 –

関連する問題