0

私はSQLに比較的慣れておらず、私のリクエストは比較的簡単に思えたので、お詫びしなければなりません。

ソースコード:

class Garage < ActiveRecord::Base
  has_one :car
  scope :active, ...

class Car < ActiveRecord::Base
  has_many :drivers

1 つのガレージはactive、所属する車に少なくとも 1 人のドライバーがいる場合です。

問題: :activeスコープは、複数のドライバーがいる車を所有するすべてのガレージを返さなければなりません。

コードは次のようなものでなければならないと思いました:

scope :active, joins(:car).where('cars.drivers.num > 0')

残念ながら、これはエラーをスローします。

4

1 に答える 1

2

これを試して:

scope :active, joins(:car => :drivers).where('COUNT(drivers.id) > 0')

悪いことに、上記のスコープはおそらく間違っています (WHERE 句の COUNT ?!)

代わりにこれを試してください:

scope :active, joins(:car => :drivers).
               select('garages.*').
               group('garages.id').
               having('COUNT(drivers.*) > 0')
于 2013-08-05T13:43:33.920 に答える