2016-05-18 98 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,使用這種方式要好得多。 –