Ich weiß, es gibt 3 Notationen für Argumente der where
Active Methode liefert:Active OR Abfrage Hash Notation
- reine String
- Array
- Hash
Angabe and
für die where
Methode ist geradlinig:
# 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})
Angabe von or
für die gleiche where
Methode stempelt mich für die Hash-Syntax. 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})
Dies ist eine vollständige Antwort. Die 'arel' Antwort ist besonders gut, da dies, wie ich verstehe, zu Rails 5 hinzugefügt wird. –
Wenn Sie nicht auf Rails 5 warten können, können Sie diesen Backport der Funktion zu Rails 4.2 verwenden. Gut verpackt als 'Where-or'-Juwel https://github.com/Eric-Guo/where-oder – Rob
Wenn Ihr Projekt immer noch in Rails 3+ ist, können Sie versuchen, die Rails_oder Gem: https: // github. com/khiav223577/rails_or –