我有以下代码可以将 MySQL 数据库中的数据提取到我的 rails 控制器中
@main = $connection.execute("SELECT * FROM builds WHERE platform_type IS NOT NULL")
这将返回一个 mysql2 类型的对象,我猜它的行为就像一个数组。
我想将其拆分为 2 个数组,第一个数组的 platform_type 为“TOTAL”,其他数组中的所有内容。
我有以下代码可以将 MySQL 数据库中的数据提取到我的 rails 控制器中
@main = $connection.execute("SELECT * FROM builds WHERE platform_type IS NOT NULL")
这将返回一个 mysql2 类型的对象,我猜它的行为就像一个数组。
我想将其拆分为 2 个数组,第一个数组的 platform_type 为“TOTAL”,其他数组中的所有内容。
它实际上返回一个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'])
试试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