Tôi đang cố chèn các giá trị thông qua một câu lệnh đã chuẩn bị bằng ActiveRecord. Tuy nhiên, mỗi lần tôi cố gắng:Chuẩn bị và thực hiện các câu lệnh với ActiveRecord bằng cách sử dụng PostgreSQL
conn = ActiveRecord::Base.connection
conn.prepare "SELECT * from sampletable where id = $1"
conn.execute 3
Sau khi tuyên bố thứ hai, tôi nhận được:
NoMethodError: undefined method `prepare' for
#<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x000001027442c8>
Tôi nên làm gì? Tôi đang chạy Rails 3.2.1 và Ruby 1.9.2
CẬP NHẬT:
Tôi đã giải quyết được sự cố. Cảm ơn bạn đã phản hồi, nhưng nó không hoạt động cho PostgreSQL. Cách để làm điều đó là:
stmt = "SELECT * from sampletable where id = $1 and name = $2"
values = [ { value: 1}, { value: "henry" } ]
nơi các giá trị là một mảng băm, mỗi chỉ định một giá trị, $ 1 được ràng buộc với băm 0, $ 2 là ràng buộc để băm thứ 2 trong mảng và vân vân
con = PG::Connection.new(:dbname => "development_DB")
con.prepare("insert", stmt)
con.exec_prepared("insert", values)
con.close()
Và điều này, phụ nữ và quý ông, hoạt động!
Nếu bạn trò chơi để tóm tắt lại các giải pháp như câu trả lời của riêng bạn, tôi sẽ xóa câu trả lời của tôi. (Xem http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments để xây dựng lý do tại sao điều này hữu ích.) Cảm ơn! – DreadPirateShawn