2012-06-11 12 views
9

guten Tag Jungs!find_by_sql mit Array-Format in Rails 3

Ich verwende find_by_sql() in Schienen 3, um Datensätze wie folgt abzurufen.

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

Wie die gleiche Aussage ändern, wenn mehrere Parameter für gleiche Attribut gilt, zum Beispiel sagen:

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

Hier sind sowohl sent_id und from_id Attribute erhält denselben Parameter params [: ID]

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

Antwort

20

können Sie einen Hash verwenden, um die interpolierten Werte zu nennen, wie folgt aus:

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