2012-12-19 4 views
5

ActiveRecordを使用して準備文を使って値を挿入しようとしています。しかし、毎回私が試してみてください。PostgreSQLを使用して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> 

私は何をすべき?私は問題を解決し

:私はRailsの3.2.1とRuby 1.9.2

UPDATEを実行していますよ。回答ありがとうございますが、PostgreSQLではうまくいきませんでした。それを行うための方法である:

値は、各々が値を指定するハッシュの配列である
stmt = "SELECT * from sampletable where id = $1 and name = $2" 
values = [ { value: 1}, { value: "henry" } ] 

、$ 1は$ 2はそうで

をアレイ内の第2のハッシュに結合され、第0ハッシュに結合しています
con = PG::Connection.new(:dbname => "development_DB") 
con.prepare("insert", stmt) 
con.exec_prepared("insert", values) 
con.close() 

そして、これは、皆様、ご協力ください! 「未回答」フィルタからこの質問を削除するために、編集した質問本体からの回答をコピー

+0

あたりの答え。 (なぜこれが役に立つのかについては、http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-commentsを参照してください)。ありがとう! – DreadPirateShawn

答えて

4

は私が問題を解決しました。応答をありがとうが、 PostgreSQLでは機能しませんでした。それを行うための方法である:

値はハッシュの配列、値を指定それぞれ、$ 1 $ 2は、アレイ内の2番目のハッシュに結合など にされ、0番目のハッシュに結合 される
stmt = "SELECT * from sampletable where id = $1 and name = $2" 
values = [ { value: 1}, { value: "henry" } ] 

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

これは、紳士淑女たちの作品です!

〜あなたがあなた自身の答えとしてのソリューションをおさらいするゲームであれば、私は私の答えを削除しますalalani

+1

新しいdb接続( 'con = PG :: Connection.new(:dbname =>" development_DB ")')を再作成するのではなく、あなたのアダプタから既存の接続を取得するほうが良いでしょう。 = ActiveRecord :: Base.connection.raw_connection' それ以外の場合は、素晴らしいです! – qix

関連する問題