【问题标题】:How to use or in rails hash query如何使用或在rails中进行哈希查询
【发布时间】:2016-02-05 04:01:06
【问题描述】:

我在 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'

但是,我想使用 or 而不是 and 作为条件运算符进行查询。 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 查询方式来实现呢。

【问题讨论】:

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


    【解决方案1】:

    根据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')
    

    【讨论】:

      猜你喜欢
      • 2015-06-03
      • 2016-04-22
      • 2017-05-07
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 2021-01-01
      相关资源
      最近更新 更多