postgres から最後の挿入のインデックスを取得しようとしていますが、何らかの理由でコードが機能していません。
def process_data!(file, survey_id)
headers = [
"zip_code",
"booking_date"
]
ActiveRecord::Base.establish_connection
created_at = Time.now.strftime("%Y-%m-%d %H:%M:%S")
CSV.foreach(file, {headers: :first_row}) do |row|
sql_keys = []
sql_vals = []
headers.each_with_index do |key, idx|
val = row[idx]
sql_keys << key
sql_vals << ActiveRecord::Base.connection.quote(val)
end
sql = "
INSERT INTO bookings (survey_id, #{sql_keys.join(', ')}, created_at, updated_at)
VALUES (#{survey_id}, #{sql_vals.join(', ')}, '#{created_at}', '#{created_at}')
"
booking_id = ActiveRecord::Base.connection.insert(sql)
end
end
booking_id
最後に挿入された行の ID を持つ必要がありますが、何らかの理由でnil
.
コンソールで実行ActiveRecord::Base.connection.insert(sql)
してみましたが、うまくいきました (つまり、必要な ID が返されました)。
ここで何が問題なのか知っている人はいますか?postgres が最後の ID を返せるようにするために変更する必要がある設定はありますか?