Да, это должно быть безопасно. Если вы проследите код, вы обнаружите, что ваш find_by_sql
вызов в итоге вызовет PGconn#send_query_prepared
с параметрами привязки, которые переносятся как багаж; метод send_query_prepared
является просто оболочкой для вызова API PQsendQueryPrepared
в libpq
:
static VALUE
pgconn_send_query_prepared(int argc, VALUE *argv, VALUE self)
{
/* ... bunch of boiler plate marshalling stuff ... */
result = PQsendQueryPrepared(conn, StringValuePtr(name), nParams,
(const char * const *)paramValues, paramLengths, paramFormats,
resultFormat);
/* ... */
}
Параметры привязки заканчиваются на paramValues
. Так что у вас все должно быть хорошо, если только нет ошибок в обработке операторов, подготовленных в библиотеке C PostgreSQL.