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
}

しかし、次のようなsmthでレールウェイを使用してみませんか。

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を使用します。1つのメソッドでRubyの選択と拒否

于 2013-03-27T05:41:04.187 に答える