【问题标题】:PG error using rails wherePG错误使用rails where
【发布时间】:2015-03-12 11:38:43
【问题描述】:

我有类似的简单查询

User.where('(zone_id IN (?) AND zone_type = "Org") OR (zone_id = ? AND zone_type ="Com")', [1,2,3], 10)

这让我很震惊

PG::UndefinedColumn: ERROR:  column "Org" does not exist

我做错了什么?

【问题讨论】:

  • 不确定试试这个User.where('(zone_id IN (?),zone_type = "Org") OR (zone_id = ?,zone_type ="Com")', [1,2,3], 10)
  • User.where('(zone_id IN (?),zone_type = ?) OR (zone_id = ?,zone_type =?)', [1,2,3], "org", 10, "com") 试试这个
  • 我认为逗号在where的“查询”中使用无效,请检查-guides.rubyonrails.org/…
  • 你可以试试:User.where("(zone_id IN (:zone_ids) AND zone_type = :org_zone) OR (zone_id = :another_zone AND zone_type = :om_zone)", { zone_ids: [123], org_zone: "Org", another_zone: 10, com_zone: "Com" })
  • User.where(zone_id: [1,3,5] AND zone_type:"org").or.where(zone_id: 10 AND zone_type: "com")

标签: ruby-on-rails ruby postgresql pg


【解决方案1】:

显然替换所有条件可以解决问题:

User.where('(zone_id IN (?) AND zone_type = "?") OR (zone_id = ? AND zone_type ="?")', [1,2,3], "Org", 10, "Com")

我会建议以下 solition,它更具可读性:

User.where(zone_id: [1,3,5] AND zone_type:"org").or.where(zone_id: 10 AND zone_type: "com")

【讨论】:

    【解决方案2】:

    更多 Rails 方式, 您不必使用IN 运算符

    User.where(zone_id: [1,3,5] AND zone_type:"org").or.where(zone_id: 10 AND zone_type: "com")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2013-01-13
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      相关资源
      最近更新 更多