查询转变为主动记录 [英] Transformation of query to active record

查看:134
本文介绍了查询转变为主动记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

要执行一系列查询,我们按照一个类似于下面的语法 - :

  OMS [:ORDER_ITEMS]。凡(:internal_sla => 3..5)在此查询结果
 => #<续集:: Mysql2 ::数据集:SELECT * FROM`order_items` WHERE((`internal_sla`> = 3)和(`internal_sla`< = 5))>
 

但我怎么能更改活动记录查询给我这样的事情=> 从ORDER_ITEMS选择internal_sla其中(internal_sla< = 3,internal_sla> = 0)或(internal_sla< = 15,internal_sla&GT = 10)

解决方案

 。凡((internal_sla> = AND internal_sla< = OR
internal_sla> =?与internal_sla< =? ),0,3,10,15).pluck(:internal_sla)
 

更新注释后:

如果internal_sla是整数,您可以:

 。凡(:internal_sla =>(0..3).to_a +(10..15).to_a).pluck(:internal_sla)
 

编辑:固定错字

To perform a range query we follow something akin to the syntax below -:

oms[:order_items].where(:internal_sla => 3..5) results in this query
 => #<Sequel::Mysql2::Dataset: "SELECT * FROM `order_items` WHERE ((`internal_sla` >= 3) AND (`internal_sla` <= 5))"> 

But how can I change the active record query to give me something like this => select internal_sla from order_items where (internal_sla<=3 and internal_sla>=0) OR (internal_sla<=15 and internal_sla>=10)

解决方案

.where("(internal_sla >= ? AND internal_sla <= ? OR 
internal_sla >= ? AND internal_sla <= ? )", 0, 3, 10, 15).pluck(:internal_sla)

UPDATE after comment:

If internal_sla is integer, you can:

.where(:internal_sla => (0..3).to_a + (10..15).to_a).pluck(:internal_sla)

edit: fixed typo

这篇关于查询转变为主动记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆