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 № 1Hierfür gibt es ein paar Möglichkeiten.
bekommen meta_where oder Rakel abhängig von Ihrer Schienenversion. Dies sind wirklich großartige Juwelen, die das Arel-Verhalten von ActiveRecord :: Relation verbessern.
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.