单个ActiveRecord'where'子句中的两个条件数组

时间:2011-11-07 16:32:36

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

假设我有两对这样的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

1 个答案:

答案 0 :(得分:2)

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

  1. 获取meta_wheresqueel,具体取决于您的rails版本。这些是非常好的宝石,可以增强ActiveRecord :: Relation的Arel行为。

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