Ruby on rails 使用PostgreSQL使用ActiveRecord准备和执行语句

Ruby on rails 使用PostgreSQL使用ActiveRecord准备和执行语句,ruby-on-rails,activerecord,insert,prepared-statement,Ruby On Rails,Activerecord,Insert,Prepared Statement,我试图使用ActiveRecord通过一个准备好的语句插入值。然而,每次我尝试: conn = ActiveRecord::Base.connection conn.prepare "SELECT * from sampletable where id = $1" conn.execute 3 在第二次陈述之后,我得到: NoMethodError: undefined method `prepare' for #<ActiveRecord::ConnectionAdapters::Po

我试图使用ActiveRecord通过一个准备好的语句插入值。然而,每次我尝试:

conn = ActiveRecord::Base.connection
conn.prepare "SELECT * from sampletable where id = $1"
conn.execute 3
在第二次陈述之后,我得到:

NoMethodError: undefined method `prepare' for
#<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x000001027442c8>
其中,值是散列数组,每个值指定一个值,$1绑定到第0个散列,$2绑定到数组中的第2个散列,依此类推

con = PG::Connection.new(:dbname => "development_DB")
con.prepare("insert", stmt)
con.exec_prepared("insert", values)
con.close()

女士们,先生们,这个很有效

从编辑的问题正文中复制答案,以便从“未回答”筛选器中删除此问题:

我解决了这个问题。谢谢你的回复,但这对我来说不起作用 PostgreSQL。方法是:

stmt = "SELECT * from sampletable where id = $1 and name = $2"
values = [ { value: 1}, { value: "henry" } ]
stmt = "SELECT * from sampletable where id = $1 and name = $2"
values = [ { value: 1}, { value: "henry" } ]
其中,value是一个散列数组,每个散列指定一个值,$1为 绑定到第0个哈希,$2绑定到数组中的第2个哈希,依此类推 在

女士们,先生们,这个很有效


~answer per

如果你想重述解决方案作为自己的答案,我将删除我的答案。(请参阅详细说明为什么这会有帮助。)谢谢!与其重新创建一个新的数据库连接(
con=PG::connection.new(:dbname=>“development\u db”)
),不如从适配器中获取任何现有的连接,比如:
con=ActiveRecord::Base.connection.raw\u connection
,否则,它工作得很好!
con = PG::Connection.new(:dbname => "development_DB")
con.prepare("insert", stmt)
con.exec_prepared("insert", values)
con.close()