2016-05-18 55 views
2

我试图用地图函数中的变量创建查询,但存储在这些字段之一中的内容确实包含'(引号,如Barney's)。所以每当它破裂,因为'将打破这种说法。我怎样才能解决它? 我试图使用.split函数,但没有成功。 不用担心SQL注入,因为我只是从API加载数据到我的数据库。在地图变量中避免引号

代码:

query_values = activities.map do |activity| 
    '(' + 
    "#{activity['id']}, 
    ""'#{activity['type']}""'" #using ""' just to fill the column when empty cells are raised 
    +')' 

end 
query = "INSERT INTO pd_activities VALUES #{query_values.join(', ')}" 

在此先感谢。

+1

盲目插入的东西简直是疯了。 **即使您认为您的数据没问题,也不要这样做。当你认为你遇到麻烦时。 – tadman

回答

3

如何做到这一点正确的股票在cheat sheet

db[:pd_activities].insert(
    id: activity['id'], 
    type: activity['type'] 
) 

这需要照顾所有的逃避问题为您服务。如果所有的activity都有这两个键,你甚至可以做到这一点:

db[:pd_activities].insert(activity) 
+1

女士们,先生们,请举杯敬酒给刚刚创下世纪纪念的tadman! –

+0

这把它放在顶部。谢谢! – tadman

+0

谢谢@tadman,使用这种方式要好得多。 –