我有一个位于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
部分?
答案 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。