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
}
しかし、次のようなsmthでレールウェイを使用してみませんか。
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を使用します。1つのメソッドでRubyの選択と拒否