2012-12-19 31 views
5

kullanarak ActiveRecord ile deyimler hazırlayın ve çalıştırın ActiveRecord kullanarak hazırlanmış bir deyim kullanarak değerler eklemeye çalışıyorum. Ancak, her şey denemek:PostgreSQL

conn = ActiveRecord::Base.connection 
conn.prepare "SELECT * from sampletable where id = $1" 
conn.execute 3 

ikinci açıklamadan sonra alıyorum:

NoMethodError: undefined method `prepare' for 
#<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x000001027442c8> 

ne yapmalıyım?

Ben sorunu çözüldü: Ben 1.9.2

GÜNCELLEME raylar 3.2.1 ve Ruby koşuyorum. Yanıt için teşekkürler, ancak PostgreSQL için çalışmadı. Bunu yapmak için bir yoldur:

değerleri, her biri bir değer belirleyerek karma bir dizidir
stmt = "SELECT * from sampletable where id = $1 and name = $2" 
values = [ { value: 1}, { value: "henry" } ] 

, $ 1 $ 2,

dizideki 2. karma bağlı olan ve, 0. karma bağlı
con = PG::Connection.new(:dbname => "development_DB") 
con.prepare("insert", stmt) 
con.exec_prepared("insert", values) 
con.close() 

Ve bu, bayanlar baylar, işe yarıyor! "Cevapsız" filtresinden Bu soruyu kaldırmak amacıyla düzenlenmiş soru vücuttan cevabını kopyalanması

+0

başına cevap. (Bunun neden yararlı olduğunu anlamak için http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments adresine bakın.) Teşekkürler! – DreadPirateShawn

cevap

4

:

Ben sorunu çözüldü. Yanıt için teşekkürler, ancak PostgreSQL için çalışmadı. Bunu yapmak için bir yoldur:

değerleri karma bir dizidir
stmt = "SELECT * from sampletable where id = $1 and name = $2" 
values = [ { value: 1}, { value: "henry" } ] 

, her biri bir değer belirleyerek, $ 1 $ 2 dizisinde 2. karma bağlanan ve böylece ilgili olup, 0. karma bağlı olan

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

Ve bu, bayanlar baylar, işe yarıyor!

~ oyun kendi cevap olarak çözümünü özetlemek gerekirse iseniz, benim cevap sileceğiz alalani

+1

Yeni bir db bağlantısını yeniden oluşturmak yerine ('con = PG :: Connection.new (: dbname =>" development_DB ")'), bağdaştırıcınızdaki herhangi bir bağlantıyı almak daha iyi olurdu. = ActiveRecord :: Base.connection.raw_connection' Ancak aksi halde, harika çalışıyor! – qix