Два массива условий в одном предложении ActiveRecord 'where' - PullRequest
0 голосов
/ 07 ноября 2011

Допустим, у меня есть две пары условий 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, чтобы получить строки, которые удовлетворяют условиям a или b?Результат должен быть ActiveRecord::Relation.

1 Ответ

2 голосов
/ 07 ноября 2011

Есть несколько способов сделать это.

  1. get meta_where или squeel в зависимости от вашей версии рельсов.Это действительно замечательные гемы, которые улучшают поведение Arel в ActiveRecord :: Relation.

  2. пишут sql вручную и передают его в метод where в виде строки.Возможно, вам придется больше вмешиваться в SQL-инъекцию, но из приведенного выше примера я не увидел никаких входящих значений, которые были сгенерированы пользователем.

...