在我的rails项目中查询时,我一直在使用以下语法。
Table.where({ fld_1: "val_1", fld_2: "val_2" })
将生成以下sql
SELECT * FROM tables WHERE fld_1 = 'val_1' AND fld_2 = 'val_2'
但是,我想使用或而不是和作为条件opoerator进行查询。
前 SELECT * FROM tables WHERE fld_1 = 'val_1' or fld_2 = 'val_2'
我可以使用此查询获得它
Table.where(["fld_1 = ? and fld_2 = ?", "val_1", "val_2"])
但是如何使用Hash查询方式实现它。
答案 0 :(得分:0)
根据Rails documentation on Hash querying:
只有使用哈希条件才能进行相等,范围和子集检查。
所以你最好的选择是跳过哈希并使用你提到的数组:
Table.where('fld_1= ? OR fld_2= ?', 'val_1', 'val_2')
幸运的是,or
条件类似于您正在寻找的will be coming in Rails 5(which has been backported to Rails 4.2.2)。当它出现时,您可以像这样编写查询:
Table.where(fld_1: 'val_1').or.where(fld_2: 'val_2')