PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ruby:Wie man Parameter in nativem PG-Gem dynamisch ersetzt

Platzhalter (z. B. $1 , $2 , ...) sind für Werte. Ein Datenbankname (oder Tabellenname, Spaltenname, ...) ist ein Bezeichner. Dies ähnelt dem Unterschied zwischen einem Variablennamen und dem Wert, den die Variable in Ruby enthält.

Wenn Sie in einigen SQL-Befehlen dynamisch einen Bezeichner einfügen müssen, müssen Sie die Zeichenfolgeninterpolation und den speziellen Zweck quote_ident Methode, um sicherzustellen, dass Sie es richtig zitieren. Also eher so:

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