/ / Dwie tablice warunków w pojedynczej klauzuli ActiveRecord „where” - sql, ruby-on-rails, activerecord, where-clause

Dwie tablice warunków w pojedynczej ActiveRecord „gdzie” klauzula - sql, ruby-on-rails, activerecord, gdzie-klauzula

Powiedzmy, że mam dwie pary takich warunków 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 ]

Mogę używać kodu podobnego do User.where(a) aby uzyskać wszystkie wiersze, które spełniają a stan. Jak mogę korzystać where aby uzyskać wiersze, które spełniają oba a lub b warunki? Wynik powinien być ActiveRecord::Relation.

Odpowiedzi:

2 dla odpowiedzi № 1

Jest na to kilka sposobów.

  1. otrzymać meta_where lub piszczy w zależności od wersji szyn. To naprawdę świetne klejnoty, które poprawiają zachowanie Arel w ActiveRecord :: Relation.

  2. napisz sql ręcznie i przekaż go gdziemetoda jako ciąg. Być może będziesz musiał ręcznie wprowadzić bałagan w iniekcję sql, ale z powyższego przykładu nie widziałem żadnych przychodzących wartości, które byłyby łańcuchami wygenerowanymi przez użytkownika.