2011-01-15 11 views
0

Ich erstellen einen Bedingungen Hash, um eine Abfrage auszuführen, aber ich habe ein Problem mit einem bestimmten Fall: conditions2 = ['extrahieren (Jahr von Signatur_Datum) =?', Params [ : Jahr] .to_i] es sei denn, Params [: Jahr] .blank?Verwenden Sie eine Funktion in einem Bedingungen Hash

conditions[:country_id] = COUNTRIES.select{|c| c.geography_id == params[:geographies]} unless params[:geographies].blank? 
conditions[:category_id] = CATEGORY_CHILDREN[params[:categories].to_i] unless params[:categories].blank? 
conditions[:country_id] = params[:countries] unless params[:countries].blank? 
conditions['extract(year from signature_date)'] = params[:year].to_i unless params[:year].blank? 

Aber die letzte Zeile bricht alles, wie es wie folgt interpretiert wird:

AND ("negotiations"."extract(year from signature_date)" = 2010 

Gibt es eine Möglichkeit zu verhindern, dass "negotiations"." zu meinen Zustand vorangestellt?

danke, P.

Antwort

0

Für so etwas wie dies, werden Sie wahrscheinlich Ihre eigene SQL mit find_by_sql haben zu schreiben. Wickeln Sie es immer noch in eine Methode in Ihrem Modell ein, damit die Freunde Ihres Modells darauf gut zugreifen können.

+0

Ich denke, das ist der einzige Weg in der Tat. Vielen Dank – Pierre

Verwandte Themen