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,
  • ksplit吧(将字符串切成空格分隔的单词),保留最后一个单词使用last
  • 在结果中添加一个新条目,其中键是最后选择的单词,值为 v