2010-07-21 8 views
5

que estoy haciendo algunos LSQ lisos en mi modelo de carriles (para los puristas esto es sólo para LSQ complejos :)carriles - escapan SQL params

Como yo no estoy usando métodos de búsqueda */estado, ¿existe un método de ayuda que Puedo usar directamente para hacer eso?

Respuesta

6

El método quote en el objeto de conexión escapa cadenas. Al generar consultas, use sanitize_sql_for_conditions para convertir hashes o matrices de condiciones de ActiveRecord a cláusulas WHERE de SQL.

Los métodos en ActiveRecord::ConnectionAdapters::DatabaseStatements son útiles para consultas directas, en particular las que comienzan con select_.

+0

sí en mi modelo estoy haciendo connection.select_all (SQL). Pero no puedo encontrar el método de "cita" en el objeto de conexión en rdoc para escapar de mis parámetros de entrada para las condiciones. – kapso

+0

Bien, lo tengo, ¡gracias! – kapso

+7

'sanitize_sql_for_conditions' parece moverse a un módulo y establecerse en privado. – lulalala

0

Rails usa sanitize_sql_for_conditions internamente para tratar con marcadores de posición. Por supuesto, ese método está protegido, por lo que no puede (limpiamente) usarlo fuera de un modelo ActiveRecord. Puede moverse por la protectedness usando send:

escaped_string = Model.send(:sanitize_sql_for_conditions, [ 
     'id = ? and name = ?', 
     params[:id], params[:name] 
    ] 
) 
Cuestiones relacionadas