【问题标题】:Two arrays of conditions in single ActiveRecord 'where' clause单个 ActiveRecord 'where' 子句中的两个条件数组
【发布时间】:2011-11-07 16:32:35
【问题描述】:

假设我有两对这样的 SQL 条件:

a = [ "users.accepted = ? AND users.active_at > ?", true,  Time.zone.now ]
b = [ "users.accepted = ? AND users.active_at > ?", false, Time.zone.now + 3.days ]

我可以使用User.where(a) 之类的代码来获取满足a 条件的所有行。如何使用where 获取满足ab 条件的行?结果应该是ActiveRecord::Relation

【问题讨论】:

标签: sql ruby-on-rails activerecord where-clause


【解决方案1】:

有几种方法可以解决这个问题。

  1. 获取 meta_wheresqueel,具体取决于您的 Rails 版本。这些是增强 ActiveRecord::Relation 的 Arel 行为的真正伟大的宝石。

  2. 手动编写 sql 并将其作为字符串传递给 where 方法。您可能不得不更手动地处理 sql 注入,但从上面的示例中,我没有看到任何传入值是用户生成的字符串。

【讨论】:

  • +1 表示 squeel,还没有尝试过,但它看起来简单、粗体、大写 AWESOME
  • 谢谢。我是使用组合 SQL 查询完成的,但看起来应该有一种方法可以使用 'where' 方法来做到这一点。
猜你喜欢
  • 2019-11-16
  • 2021-05-13
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多