/ / Zwei Arrays von Bedingungen in einer ActiveRecord-WHERE-Klausel - SQL, Ruby-on-Rails, Activerecord, WHERE-Klausel

Zwei Arrays von Bedingungen in einer ActiveRecord-Klausel "where" - SQL, Ruby-on-Schienen, Aktiverecord, Where-Klausel

Nehmen wir an, ich habe zwei Paare von SQL-Bedingungen wie diese:

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

Ich kann Code wie verwenden User.where(a) um alle Zeilen zu erhalten, die die a Bedingung. Wie kann ich verwenden where um Zeilen zu erhalten, die befriedigen a oder b Bedingungen? Das Ergebnis sollte sein ActiveRecord::Relation.

Antworten:

2 für die Antwort № 1

Hierfür gibt es ein paar Möglichkeiten.

  1. bekommen meta_where oder Rakel abhängig von Ihrer Schienenversion. Dies sind wirklich großartige Juwelen, die das Arel-Verhalten von ActiveRecord :: Relation verbessern.

  2. Schreiben Sie SQL manuell und übergeben Sie es in das WhereMethode als Zeichenfolge. Möglicherweise müssen Sie manuell mehr mit SQL-Injection herumspielen, aber in Ihrem obigen Beispiel wurden keine eingehenden Werte angezeigt, die vom Benutzer generierte Zeichenfolgen waren.