2017-01-27 11 views
0

私はいくつかの要約を行う必要があるSequelベースのクラスを持っています。Sequel gemを使用してgroup_and_countの結果を取得するにはどうすればよいですか?

私はgroup_and_countを行っています。正しいクエリが生成されていることがわかります。私はORMのものを中心に取り組んで、私は必要なものを得ることができます

[33] pry(main)> grouped = Pancakes::Stack.active.group_and_count('health_state') 
=> #<Sequel::Mysql2::Dataset: "SELECT 'health_state', count(*) AS `count` FROM `pancakes_stacks` WHERE (`deleted_at` IS NULL) GROUP BY 'health_state'"> 
[34] pry(main)> grouped.each_entry { |row| puts row } 
I sequel: (0.001344s) SELECT 'health_state', count(*) AS `count` FROM `pancakes_stacks` WHERE (`deleted_at` IS NULL) GROUP BY 'health_state' 
#<Pancakes::Stack:0x000000089251a0> 
=> #<Sequel::Mysql2::Dataset: "SELECT 'health_state', count(*) AS `count` FROM `pancakes_stacks` WHERE (`deleted_at` IS NULL) GROUP BY 'health_state'"> 
[35] pry(main)> grouped.first 
I sequel: (0.001502s) SELECT 'health_state', count(*) AS `count` FROM `pancakes_stacks` WHERE (`deleted_at` IS NULL) GROUP BY 'health_state' LIMIT 1 
I sequel: (0.001243s) SELECT * FROM `pancakes_stacks` WHERE (`id` IS NULL) LIMIT 1 
=> #<Pancakes::Stack:0x44b068c> 

、それはに表示されます:私は結果にアクセスしようとすると、しかし、続編は、私はを介してアクセスしていたクラスに行を強制しようとしています私は上記の再実装active方法に必要とし、クラス名からテーブル名を取得する方法を見つけ出す:

[38] pry(main)> groupie = grouped.db[:pancakes_stacks].where(deleted_at:nil).group_and_count(:health_state) 
=> #<Sequel::Mysql2::Dataset: "SELECT `health_state`, count(*) AS `count` FROM `pancakes_stacks` WHERE (`deleted_at` IS NULL) GROUP BY `health_state`"> 
[39] pry(main)> groupie.each_entry { |row| puts row } 
I sequel: (0.001598s) SELECT `health_state`, count(*) AS `count` FROM `pancakes_stacks` WHERE (`deleted_at` IS NULL) GROUP BY `health_state` 
{:health_state=>nil, :count=>3} 
{:health_state=>"healthy", :count=>10} 

がもっと簡単な方法はありませんか?私はquerying pageに多くの時間を費やしましたが、例には結果にアクセスする方法が示されていません。

答えて

0

データセットに.nakedを追加するだけで、モデルオブジェクトの代わりにデータセットのハッシュを返すことができます。

関連する問題