[英]Joining an array of words / phrases with Ruby
irb(main):001:0> a = ["global climate change", "calamity", "glaciers", "new york times"]
=> ["global climate change", "calamity", "glaciers", "new york times"]
irb(main):002:0> a.join(', ')
=> "global climate change, calamity, glaciers, new york times"
我需要結果是
=> "global climate change", "calamity", "glaciers", "new york times"
想法? 單線將是理想的。
通過ActiveRecord將選項數組傳遞給查詢的正確方法是使用查詢參數:
a = ["global climate change", "calamity", "glaciers", "new york times"]
Category.where("name IN (?)", a)
# Generated query:
# Category Load (0.4ms) SELECT `categories`.* FROM `categories` WHERE (name in ('global climate change','calamity','glaciers','new york times'))
您無需執行任何特殊操作即可將其轉換為有效的SQL片段。 您應該特別避免將字符串格式化為SQL片段,因為如果不仔細進行清理,可能會在應用程序中打開SQL注入漏洞。
在查詢中使用數組非常簡單:
arr = ["global climate change", "calamity", "glaciers", "new york times"]
Category.where(:name => arr)
絕對沒有必要生成一些奇怪的字符串;)
a = ["global climate change", "calamity", "glaciers", "new york times"]
=> ["global climate change", "calamity", "glaciers", "new york times"]
%Q!"#{a.join('", "')}"!
=> "\"global climate change\", \"calamity\", \"glaciers\", \"new york times\""
a.map{|e| "\"#{e}\""}.join(', ')
=> "\"global climate change\", \"calamity\", \"glaciers\", \"new york times\""
array = ['bob', 'bill']
new_array_string = array.map { |name| "'#{name}'" }.join(',')
=> "'bob', 'bill'"
User.where("name IN (#{new_array_string})")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.