Ruby on rails Rails活动记录省略Where子句

Ruby on rails Rails活动记录省略Where子句,ruby-on-rails,Ruby On Rails,我有一个活动记录查询,它位于gem中。使用的数据库是postgres Client.where(date:@date,client:@business_id) gem使用get请求提取该数据。当@business\u id中的值太多时,URI太长。Gem没有post请求 解决方法: 业务问题是当所有@business\u id都传递到应用程序时。我可以有一个“all”按钮,它触发所有要显示的client值。我需要忽略查询的客户端:@business\u id部分 如何构造查询,以便在需要传递所

我有一个活动记录查询,它位于gem中。使用的数据库是postgres

Client.where(date:@date,client:@business_id)
gem使用get请求提取该数据。当
@business\u id
中的值太多时,URI太长。Gem没有post请求

解决方法:

业务问题是当所有
@business\u id
都传递到应用程序时。我可以有一个“all”按钮,它触发所有要显示的
client
值。我需要忽略查询的
客户端:@business\u id
部分


如何构造查询,以便在需要传递所有
@business\u id
时,忽略查询的
客户端:@business\u id
部分?

链接where子句,然后有条件地包括或排除@business\u id部分:

relation = Client.where(date:@date)
if your_conditional_is_true
  relation = relation.where(client:@business_id)
end
the_clients = relation.all 

这样做的原因是where实际返回的是ActiveRelation,而不是执行SQL的结果。只有在您对关系的结果进行处理之后,才会构建和执行SQL。

这是一个非常好的答案。。对其他东西也很有用