Ich weiß, dass es drei Hauptnotationen gibt, um der where
ActiveRecord-Methode Argumente zu liefern :
- Reine Saite
- Array
- Hash
Die Angabe and
für die where
Methode ist unkompliziert:
# Pure String notation
Person.where("name = 'Neil' AND age = 27")
# Array notation
Person.where(["name = ? AND age = ?", 'Neil', 27])
# Hash notation
Person.where({name: "Neil", age: 27})
Wenn ich or
für dieselbe where
Methode spezifiziere, bin ich für die Hash-Syntax verblüfft . Ist es möglich?
# Pure String notation
Person.where("name = 'Neil' OR age = 27")
# Array notation
Person.where(["name = ? OR age = ?", 'Neil', 27])
# Hash notation DOESN'T WORK
Person.where({name: "Neil" OR age: 27})
arel
Antwort ist besonders gut, da dies, wie ich verstehe, zu Rails 5 hinzugefügt wird.Wie bereits erwähnt, können Sie andere Plugins von Drittanbietern verwenden, die diese Funktion implementieren. Ich habe lange Zeit mit Squeel gearbeitet und arbeite ziemlich gut für diese und viele weitere Funktionen wie komplexe Unterabfragen oder Verknüpfungen.
Diese Abfrage mit squeel:
@people= Person.where{(name == 'Neil') | (age = 27)}
quelle