2 Stimmen

Wie kann ich "Feedback.where('poster_id = 3 OR receiver_id = 3')" in Rails 3.1 umschreiben?

Gibt es eine Möglichkeit, es auf eine "Rails-freundlichere" Weise zu schreiben?

d.h. wenn ich nach einem dieser Attribute suchen würde, würde ich einfach Feedback.where(:poster_id => 3) und es wäre gut.

Aber wie erreiche ich die OR in der Rails 3 freundlichen Syntax (im Gegensatz zur SQL freundlich).

Außerdem, wenn es sich better meine ursprüngliche Version der gewünschten vorzuziehen, warum ist sie besser?

Danke.

Bearbeiten 1 : Übrigens, wenn ich das tue Feedback.where(:poster_id => 3, :receiver_id => 3) die das Ergebnis für die AND Das ist genau das Gegenteil von dem, was ich will. Ich fühle mich also so nah dran, aber noch nicht ganz am Ziel.

2voto

Spike Gronim Punkte 6076

Sie können dies tun, indem Sie SQL-Fragmente in die where()-Argumente einfügen. Für weitere Informationen können Sie Schauen Sie sich die Anleitung zur ActiveRecord-Abfrage an.

Feedback.where("poster_id = ? OR receiver_id = ?", 1, 3)

Sie können dies ohne SQL-Fragmente tun wie in diesem SO-Beitrag beschrieben :

t = Feedback.arel_table
Feedback.where(t[:poster_id].eq(1).or(t[:receiver_id].eq(2)))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X