2012-06-11 13 views
9

¡buenos días chicos!find_by_sql con formato de matriz en Rails 3

Estoy usando find_by_sql() en rails 3 para recuperar registros de la siguiente manera.

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

Cómo modificar la misma declaración si el parámetro múltiple se aplica para un mismo atributo, digamos por ejemplo:

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

Aquí, tanto sent_id y from_id atributos recibe mismo parámetro params [: id]

Así que, en lugar de pasar el mismo params [: id] dos veces, ¿hay algún mecanismo disponible para pasar el parámetro según el orden?

Respuesta

20

Puede utilizar un hash para nombrar los valores interpolados, así:

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