sql >> Base de Datos >  >> RDS >> PostgreSQL

Ruby:cómo reemplazar dinámicamente los parámetros en la gema PG nativa

Marcadores de posición (es decir, $1 , $2 , ...) son para valores. Un nombre de base de datos (o nombre de tabla, nombre de columna, ...) es un identificador. Esto es similar a la diferencia entre el nombre de una variable y el valor que tiene la variable en Ruby.

Si necesita insertar dinámicamente un identificador en algún SQL, entonces necesita usar la interpolación de cadenas y el propósito especial quote_ident método para asegurarse de citarlo correctamente. Así que algo más como esto:

db_name = conn.quote_ident(db_name)
res     = conn.exec("CREATE DATABASE #{db_name}")