我有一个基于续集的课程,我需要做一些摘要。
我正在做group_and_count
,我可以看到它正在生成正确的查询。但是,当我尝试访问结果时,Sequel试图将行强制进入我通过以下方式访问的课程:
[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>
我可以通过解决ORM的问题得到我需要的东西,但这似乎要求我重新实现上面的active
方法,并弄清楚如何从类名中获取表名: / p>
[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 :(得分:0)
您可能只想在数据集中添加.naked
,这将使数据集返回哈希值而不是模型对象。
答案 1 :(得分:0)
我个人使用square brackets方法获取一行的:count
属性:
row[:count]