Gibt es eine AR#or_where
in Rails 3 wie inSchienen 3: Gibt es eine `AR # or_where`?
User.where(cond1).or_where(cond2)
?
Gibt es eine AR#or_where
in Rails 3 wie inSchienen 3: Gibt es eine `AR # or_where`?
User.where(cond1).or_where(cond2)
?
Wenn du sie so verketten willst, musst du ein bisschen in Arel eintauchen. Siehe this similar SO question.
Es gibt keine solche Methode in Rails.
Ich denke, dass der einfachste Weg, eine ODER in eine tun WHERE-Klausel, so etwas zu tun ist:
User.where("first_name = ? OR last_name = ?", params[:first_name], "Wilson")
Wenn Sie die Arel Methoden lernen wollen (was hat ein „oder“ Methode) , schaue hier: https://github.com/rails/arel#readme. Mit Arel und Active, können Sie das gleiche tun, wie folgt:
User.where(User.arel_table[:first_name].eq(params[:first_name]).or(User.arel_table[:last_name].eq('Wilson')))
Sie einen Blick auf meta_where nehmen. Dieses Gem ermöglicht leistungsfähigere ActiveRecord-Abfrageausdrücke in Ruby-Code, ohne dass SQL-Fragmente gelöscht werden müssen.
Einfach mit User.where(cond1) | User.where(cond2)
, die || ist reserviert von Ruby!
Es ist wahr, dass dies das gleiche Ergebnis, aber es macht tatsächlich zwei SQL-Abfragen und verwendet den Ruby Array-Vereinigungsoperator ([Array # |] (http://www.ruby-doc.org/core/classes/Array.html#M000275)), um die Ergebnisse in einem Array zu verketten. Sie können die SQL-Abfragen sehen, indem Sie die rails-Konsole ausführen und sie wie folgt in STDOUT anmelden: 'ActiveRecord :: Base.logger = Logger.new (STDOUT)', dann 'User.where (cond1) | User.where (cond2) '. – dontangg
Hinweis für Besucher: Sie können diese Methode/Soln mit dem gleichen Spaltennamen für mehrere Abfragen verwenden, zB "Model.where ('name =? OR name =? ODER name =?', 'South Carolina', ' South_Carolina ',' South Carolina ') etc ... natürlich könnten Sie dieses Problem auch mit anderen Methoden lösen, aber dieses würde auch funktionieren –