Rails Active Record省略哪里的条款

时间:2016-06-29 14:06:16

标签: ruby-on-rails

我有一个位于gem内部的Active Record查询。使用的数据库是postgres。

Client.where(date:@date,client:@business_id)

gem使用get请求来提取此数据。如果@business_id中的值太多,则URI太长。宝石没有帖子请求。

解决方法:

业务问题是当所有@business_id传递给应用时。我可以有一个“全部”按钮,触发显示的所有client值。我需要忽略查询的client:@business_id部分。

如何构建查询,以便在需要传递所有@business_id时,它会忽略查询的client:@business_id部分?

1 个答案:

答案 0 :(得分:2)

链接where子句,然后有条件地包含或排除@business_id部分:

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

这样做的原因是实际返回ActiveRelation的位置,而不是执行SQL的结果。在您处理关系结果之前,不会构建和执行SQL。