2

SQL ステートメントにロードしようとしている配列があります。SQL ステートメントをコンパイルして配列を含めると、[]ブラケットも文字列に挿入されるため、DB に挿入するにはブラケットを削除する必要があります。

これが私のコードです:

i = 0

while i < rows.length
     sql = "INSERT INTO my_table VALUES(#{rows[i]})"
     puts sql
end

現在の出力:

INSERT INTO my_table VALUES(["value 1", "value 2", "value 3"])

望ましい出力:

INSERT INTO my_table VALUES("value 1", "value 2", "value 3")
4

2 に答える 2

8

とを使用inspectjoinます。

sql = "INSERT INTO my_table VALUES(#{rows[i].map{|x| x.inspect}.join(', ')})"
  • map配列の各要素に対してブロックを呼び出し、その要素をブロックの戻り値に設定します
  • inspect文字列をその表現に変換します (のように"the string"(引用符で囲みます))
  • join間に区切り文字を入れてそれらをすべてまとめます
于 2014-01-09T21:58:27.797 に答える