Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当条件依赖于关系属性时,如何搜索模型_Sql_Ruby On Rails 3_Postgresql_Relational Database_Where - Fatal编程技术网

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

Sql 当条件依赖于关系属性时,如何搜索模型,sql,ruby-on-rails-3,postgresql,relational-database,where,Sql,Ruby On Rails 3,Postgresql,Relational Database,Where,我有两种型号 class User has_many :cars end class Car belongs_to :user end 我可以做User.where(…)并测试任何用户属性 如何测试关系的属性? 例如,我想执行“获取user.car.color=green的所有用户”?或者“让所有拥有两辆以上汽车的用户”使用: 对于第二个问题: User.joins(:cars).group('users.id HAVING count(cars.id) > 2') 把它们放在一起:

我有两种型号

class User
has_many :cars
end

class Car
belongs_to :user
end
我可以做
User.where(…)
并测试任何用户属性

如何测试关系的属性? 例如,我想执行
“获取user.car.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.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.include(:cars).where("cars.color" => "green")

我怎么计算汽车的数量<代码>何处('COUNT(cars)>2')
不起作用如果你加上,.where('cars.color'=>'green'),那么这就是最好的答案我如何计算汽车数量<代码>其中('COUNT(cars)>2')不起作用如果你添加,.where('cars.color'=>'green'),那么这就是最好的答案根据你下面的附加问题,你可以这样做:
User.joins(:cars)。选择(“users.id,users.first\u name,users.etc,COUNT(cars.id)”。其中(“cars.color”=>“green”)。组(“users.id,users.first\u name,users.etc”)。have(“count(cars.id)>2”)
根据下面的附加问题,您可以这样做:
User.joins(:cars)。选择(“users.id,users.first\u name,users.etc,count(cars.id)”)。其中(“cars.color”=>“green”).group(“users.id,users.first\u name,users.etc”)。have(“count(cars.id)>2”)