【问题标题】:Is there a DRY way to pass bind variables to an AR Relation?有没有一种 DRY 方法可以将绑定变量传递给 AR 关系?
【发布时间】:2013-01-25 16:45:37
【问题描述】:

我有这样的代码:

t = "%#{term}%"
where('name like ? or email like ? or postcode like ?', t, t, t)

如您所见,它正在跨多个字段执行搜索。

有没有办法避免重复的 t?这让我觉得很脏。

谢谢

【问题讨论】:

    标签: ruby-on-rails rails-activerecord active-relation


    【解决方案1】:

    您可以使用命名占位符来做到这一点:

    where('name LIKE :name OR email LIKE :name OR postcode LIKE :name', :name => t)
    

    这通常是在查询中多次重复奇异值的最佳方式。

    【讨论】:

      【解决方案2】:
      t = "%#{term}%"
      where('name || email || postcode like ?', t)
      

      【讨论】:

      • 它在语法上是正确的(|| 是字符串连接运算符),但它与原始查询的作用不同
      猜你喜欢
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 2017-07-29
      • 2021-11-28
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多