如何使用或在rails hash查询中

时间:2016-02-05 04:01:06

标签: ruby-on-rails-3 ruby-on-rails-4

在我的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查询方式实现它。

1 个答案:

答案 0 :(得分: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')