我有2種型號如何當條件依靠關係檢索模型屬性
class User
has_many :cars
end
class Car
belongs_to :user
end
我可以做User.where(...)
和測試任何用戶屬性
如何測試關係的屬性? 例如,我想要做'get all users where user.car.color = green'
?或'get all users which have more than two cars'
我有2種型號如何當條件依靠關係檢索模型屬性
class User
has_many :cars
end
class Car
belongs_to :user
end
我可以做User.where(...)
和測試任何用戶屬性
如何測試關係的屬性? 例如,我想要做'get all users where user.car.color = green'
?或'get all users which have more than two cars'
使用joins
:
User.joins(:cars).where('cars.color' => 'green')
而對於第二個:
User.joins(:cars).group('users.id HAVING count(cars.id) > 2')
,並把那些一起:
User.joins(:cars)
.group('users.id HAVING count(cars.id) > 2')
.where('cars.color' => 'green')
這樣的事情應該工作:
User.include(:cars).where("cars.color" => "green")
根據下面的附加問題,你可以這樣做:'User.joins(:cars).select(「users.id,users.first_name,users.etc,count(cars.id)」)。 「cars.color」=>「green」)。group(「users.id,users.first_name,users.etc」)。having(「count(cars.id)> 2」)' – plasticide
我該如何計算汽車的數量? '在哪裏('COUNT(cars)> 2')'不起作用 –
更新了我的答案。 –
如果添加.where('cars.color'=>'green'),那麼這是最好的答案 – plasticide