Sto provando a inserire valori tramite un'istruzione preparata utilizzando ActiveRecord. Tuttavia, ogni volta che provo:Preparare ed eseguire istruzioni con ActiveRecord utilizzando PostgreSQL
conn = ActiveRecord::Base.connection
conn.prepare "SELECT * from sampletable where id = $1"
conn.execute 3
Dopo la seconda affermazione, ottengo:
NoMethodError: undefined method `prepare' for
#<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x000001027442c8>
Cosa devo fare? Io corro Rails 3.2.1 e Ruby 1.9.2
UPDATE:
ho risolto il problema. Grazie per la risposta, ma non ha funzionato con PostgreSQL. Il modo per farlo è:
stmt = "SELECT * from sampletable where id = $1 and name = $2"
values = [ { value: 1}, { value: "henry" } ]
in cui i valori è un array di hash, ognuna delle quali specifica un valore, $ 1 è destinata a l'hash 0a, $ 2 è destinato al 2 ° hash nella matrice e così via
con = PG::Connection.new(:dbname => "development_DB")
con.prepare("insert", stmt)
con.exec_prepared("insert", values)
con.close()
E questo, signore e signori, funziona!
Se siete gioco per ricapitolare la soluzione come la propria risposta, io cancello la mia risposta. (Vedi http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments per l'elaborazione del motivo per cui questo è utile.) Grazie! – DreadPirateShawn