映射函数返回带括号和引号的变量
Map function returning variables with brackets and quotes
我正在尝试使用 pipedrive-ruby
和 Sequel gem 从 JSON 哈希中检索数据并将其存储到数据库,但它总是 returns 值在每个单元格中加上引号,在字符串的开头和结尾加上方括号。我该如何解决?
代码:
query_values = activities.map do |activity|
"#{activity['id']}"
end
query = "INSERT INTO pd_activities (id) VALUES (#{query_values})"
insert_ds = DB[query]
insert_ds.insert
这是尝试插入数据库时的错误:
/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sequel-4.34.0/lib/sequel/adapters/postgres.rb:186:in `async_exec': PG::SyntaxError: ERROR: syntax error at or near "[" (Sequel::DatabaseError)
LINE 1: INSERT INTO pd_activities (id) VALUES (["72943", "73532", "7...
您以不正确的方式使用字符串插值将值包含到 SQL 语句中。
这将起作用,而不是:
query = "INSERT INTO pd_activities (id) VALUES ("#{query_values.join(', ')}")"
如果activities
中的值为整数,则可以避免activities.map
步骤中的字符串插值。为此,只需使用:
query_values = activities.map {|activity| activity['id'] }
如果activities = [12, 34, 98, 142]
,这将产生:
"INSERT INTO pd_activities (id) VALUES (12, 34, 98, 142)"
但是,如果 activities
中的值是字符串,您应该改为这样做:
query_values = activities.map {|activity| "'#{activity['id']}'" }
如果activities = ["12", "34", "98", "142"]
,这将产生:
"INSERT INTO pd_activities (id) VALUES ('12', '34', '98', '142')"
我正在尝试使用 pipedrive-ruby
和 Sequel gem 从 JSON 哈希中检索数据并将其存储到数据库,但它总是 returns 值在每个单元格中加上引号,在字符串的开头和结尾加上方括号。我该如何解决?
代码:
query_values = activities.map do |activity|
"#{activity['id']}"
end
query = "INSERT INTO pd_activities (id) VALUES (#{query_values})"
insert_ds = DB[query]
insert_ds.insert
这是尝试插入数据库时的错误:
/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sequel-4.34.0/lib/sequel/adapters/postgres.rb:186:in `async_exec': PG::SyntaxError: ERROR: syntax error at or near "[" (Sequel::DatabaseError)
LINE 1: INSERT INTO pd_activities (id) VALUES (["72943", "73532", "7...
您以不正确的方式使用字符串插值将值包含到 SQL 语句中。
这将起作用,而不是:
query = "INSERT INTO pd_activities (id) VALUES ("#{query_values.join(', ')}")"
如果activities
中的值为整数,则可以避免activities.map
步骤中的字符串插值。为此,只需使用:
query_values = activities.map {|activity| activity['id'] }
如果activities = [12, 34, 98, 142]
,这将产生:
"INSERT INTO pd_activities (id) VALUES (12, 34, 98, 142)"
但是,如果 activities
中的值是字符串,您应该改为这样做:
query_values = activities.map {|activity| "'#{activity['id']}'" }
如果activities = ["12", "34", "98", "142"]
,这将产生:
"INSERT INTO pd_activities (id) VALUES ('12', '34', '98', '142')"