9 Stimmen

Find_by_sql mit Array-Format in Rails 3

Guten Tag Leute!

Ich benutze find_by_sql() in Rails 3, um Datensätze wie folgt abzurufen.

@list=Email.find_by_sql(["SELECT * FROM Emails WHERE sent_id=?",params[:id]])

Wie kann man die gleiche Anweisung ändern, wenn mehrere Parameter für dasselbe Attribut gelten, z.B.:

@list=Email.find_by_sql(["SELECT * FROM Emails WHERE (sent_id=? OR from_id=?)",params[:id],params[:id]])

Hier erhalten sowohl die Attribute sent_id als auch from_id denselben Parameter params[:id]

Also anstatt den gleichen params[:id] zweimal zu übergeben, gibt es einen Mechanismus, um Parameter basierend auf der Reihenfolge zu übergeben?

20voto

MrTheWalrus Punkte 9563

Sie können einen Hash verwenden, um die interpolierten Werte zu benennen, so wie hier:

@list = Email.find_by_sql(["SELECT * FROM Emails WHERE (sent_id = :id OR from_id = :id)", {:id => params[:id]}])

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