使用括号和引号返回变量的Map函数

时间:2016-05-18 03:19:40

标签: ruby-on-rails ruby rubygems sequel

我尝试使用private bool canEdit; public bool CanEdit { get { return canEdit; } set { SetProperty(ref canEdit, value); } } 和Sequel gems来检索数据并将数据从JSON哈希存储到数据库,但它始终返回每个单元格中带引号的值和开头的方括号字符串的结尾。我该如何解决这个问题?

代码:

pipedrive-ruby

尝试插入数据库时​​出现错误:

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

1 个答案:

答案 0 :(得分:2)

您以不正确的方式使用字符串插值将值包含在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')"