0

我有以下代码可以将 MySQL 数据库中的数据提取到我的 rails 控制器中

@main = $connection.execute("SELECT * FROM builds WHERE platform_type IS NOT NULL")

这将返回一个 mysql2 类型的对象,我猜它的行为就像一个数组。

我想将其拆分为 2 个数组,第一个数组的 platform_type 为“TOTAL”,其他数组中的所有内容。

4

2 回答 2

2

它实际上返回一个Mysql2::Result对象。你当然可以

totals = []
others = []
main.each { |r|
  (r['platform_type'] == 'TOTAL' ? totals : others) << r
}

但为什么不使用类似的轨道方式:

Builds.where("platform_type = ?", 'TOTAL')
Builds.where("platform_type NOT IN ?", [nil, 'TOTAL'])
于 2013-03-27T05:41:06.123 回答
-1

试试array.select。就像是

total = @main.select { |build| build.platform_type == 'TOTAL' }
not_total = @main.reject { |build| build.platform_type == 'TOTAL' }

http://matthewcarriere.com/2008/06/23/using-select-reject-collect-inject-and-detect/

更好的是,按照这个答案使用 Enumerable.partition:Ruby Select and Reject in one method

于 2013-03-27T05:41:04.187 回答