当条件依赖于关系属性时如何搜索模型

时间:2013-01-06 12:58:59

标签: sql ruby-on-rails-3 postgresql relational-database where

我有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 个答案:

答案 0 :(得分: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 query on condition of an association's count

答案 1 :(得分:1)

这样的事情应该有效:

User.include(:cars).where("cars.color" => "green")