0

我有 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'

4

2 回答 2

2

使用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')

另请参阅:Rails 3 根据关联计数进行查询

于 2013-01-06T13:12:06.070 回答
1

像这样的东西应该工作:

User.include(:cars).where("cars.color" => "green")
于 2013-01-06T13:16:04.623 回答