2012-06-11 21 views
9

Dobrzy chłopaki!find_by_sql z formatem tablicowym w Railsach 3

Używam find_by_sql() w szynach 3, aby pobrać rekordy w następujący sposób.

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

Jak zmodyfikować samo stwierdzenie czy wielokrotność parametr dotyczy samego atrybutu, na przykład powiedzieć:

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

Tutaj zarówno sent_id i from_id atrybuty odbiera sam parametr params [: id]

Tak więc, zamiast przekazywania tych samych parametrów [: id] razy, czy istnieje jakiś mechanizm do przekazania parametru na podstawie zamówienia?

Odpowiedz

20

Można użyć skrótu do nazwy interpolowane wartości, tak:

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