RoR,Ruby 如何从数据库中拆分数据并使用计数
RoR,Ruby How to split data from database and use count with it
我正在尝试从数据库中提取数据并将其与饼图一起使用。
我能够从数据库中的 "browser" 列中提取数据,这是一个字符串,格式如下:"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
当我在查询中使用方法 "count" 时,数据将保存为这样的散列:
{"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
Firefox/45.0"=>5, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:51.0)
Gecko/20100101 Firefox/51.0"=>9}
我只想显示浏览器的版本或 OS 例如。有没有什么方法(拆分或子字符串)可以有这样的散列??当然,方法 "count" 应该有效
{"Firefox/45.0"=>5, "Firefox/51.0"=>9}
我尝试使用 split 但是当使用方法 count 时,将找不到数据,因为它作为一个完整的字符串保存在数据库中 "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"。我的数据库里table的栏目浏览器里没有"Firefox/45.0"。
我也尝试在 mysql 查询中使用子字符串,当使用来自控制台的简单查询时,我得到了我想要的结果,但是因为我在 Rails 和 ActiveRecords 上使用 Ruby "substring" 没有返回相同的结果(工作不正常)
有什么帮助吗?
执行以下操作:
input = {"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"=>5, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"=>9}
result = {}
input.each { |k, v| result[k.split.last] = v }
用您的实际查询替换输入。
它的作用是:
- 迭代输入的每个元素
- 对于每一个,使用键
k
和值 v
,
- 取
k
,split
吧(将字符串切成空格分隔的单词),保留最后一个单词使用last
- 在结果中添加一个新条目,其中键是最后选择的单词,值为
v
。
我正在尝试从数据库中提取数据并将其与饼图一起使用。
我能够从数据库中的 "browser" 列中提取数据,这是一个字符串,格式如下:"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
当我在查询中使用方法 "count" 时,数据将保存为这样的散列:
{"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"=>5, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"=>9}
我只想显示浏览器的版本或 OS 例如。有没有什么方法(拆分或子字符串)可以有这样的散列??当然,方法 "count" 应该有效
{"Firefox/45.0"=>5, "Firefox/51.0"=>9}
我尝试使用 split 但是当使用方法 count 时,将找不到数据,因为它作为一个完整的字符串保存在数据库中 "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"。我的数据库里table的栏目浏览器里没有"Firefox/45.0"。
我也尝试在 mysql 查询中使用子字符串,当使用来自控制台的简单查询时,我得到了我想要的结果,但是因为我在 Rails 和 ActiveRecords 上使用 Ruby "substring" 没有返回相同的结果(工作不正常)
有什么帮助吗?
执行以下操作:
input = {"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"=>5, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0"=>9}
result = {}
input.each { |k, v| result[k.split.last] = v }
用您的实际查询替换输入。
它的作用是:
- 迭代输入的每个元素
- 对于每一个,使用键
k
和值v
, - 取
k
,split
吧(将字符串切成空格分隔的单词),保留最后一个单词使用last
- 在结果中添加一个新条目,其中键是最后选择的单词,值为
v
。