Postgres データベースにデータを挿入するために PG gem を使用していますが、タイムスタンプを含むデータを挿入しようとすると、データベースが更新されません。IRB から実行したコードは次のとおりです。
:001 > require 'pg'
=> true
:002 > conn = PGconn.open(:dbname => 'my_db')
=> #<PG::Connection:0x8fa4a94 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>
:003 > conn.prepare('statement1', 'insert into sites (url, note, type, last_viewed) values ($1, $2, $3, $4)')
=> #<PG::Result:0x8f3c19c @connection=#<PG::Connection:0x8fa4a94 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
:004 > conn.exec_prepared('statement1', [ 'digg.com', 'news site', 3, date_trunc('second', #{conn.escape_string(current_timestamp)) ] )
:005 >
この問題は、一重引用符をエスケープする方法に関連していると思います。escape_string
以前のバージョンのコードを 4 行目で実行したときにエラー メッセージが表示されたため、PG gem のメソッドを含め始めました。
004 > conn.exec_prepared('statement1', [ 'digg.com', 'news site', 3, date_trunc('second', current_timestamp) ] )
NameError: undefined local variable or method `current_timestamp' for main:Object
from (irb):4
from /home/user/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `<main>'