2016-02-05 47 views
1

我在我的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"]) 

实现它,但我怎么能使用查询的哈希风格实现它。

回答

0

根据Rails documentation on Hash querying

只有平等,范围和子集检查是可能的哈希条件。

所以,你最好的选择是跳过哈希和使用数组像你提到的:

Table.where('fld_1= ? OR fld_2= ?', 'val_1', 'val_2') 

幸运的是,or条件类似于你正在寻找will be coming in Rails 5which has been backported to Rails 4.2.2)什么。当它出来后,你将能够写下你这样的查询:

Table.where(fld_1: 'val_1').or.where(fld_2: 'val_2')