Я делаю несколько простых SQL в моей модели rails (для пуристов это только для сложных SQL:)
Поскольку я не использую методы find * / condition, есть ли вспомогательный метод, который я могу использовать прямо для этого?
Метод quote для объекта подключения экранирует строки.При построении запросов используйте sanitize_sql_for_conditions для преобразования хэшей или массивов условий ActiveRecord в предложения SQL WHERE.
quote
sanitize_sql_for_conditions
Методы ActiveRecord::ConnectionAdapters::DatabaseStatements удобны для прямых запросовв частности те, которые начинаются с select_.
ActiveRecord::ConnectionAdapters::DatabaseStatements
select_
Rails использует sanitize_sql_for_conditions внутри для работы с заполнителями.Конечно, этот метод защищен, поэтому вы не можете (чисто) использовать его вне модели ActiveRecord.Вы можете обойти защищенность, используя send:
send
escaped_string = Model.send(:sanitize_sql_for_conditions, [ 'id = ? and name = ?', params[:id], params[:name] ] )