Ruby on rails Heroku中未定义的方法错误,排序数组

Ruby on rails Heroku中未定义的方法错误,排序数组,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,我试图按降序排列数组,但Heroku将一个错误推回给我,声称我有一个未定义的方法 我的控制器代码当前看起来像这样 def by_year_and_month @bets_by_year = Bet.where("EXTRACT(YEAR FROM created_at) = ?", params[:year]) @bets_by_month = @bets_by_year.where("EXTRACT(MONTH FROM created_at) = ?", params[:month]) @b

我试图按降序排列数组,但Heroku将一个错误推回给我,声称我有一个未定义的方法

我的控制器代码当前看起来像这样

def by_year_and_month
@bets_by_year = Bet.where("EXTRACT(YEAR FROM created_at) = ?", params[:year])
@bets_by_month = @bets_by_year.where("EXTRACT(MONTH FROM created_at) = ?", params[:month])
@bets_by_month = @bets_by_month.all.group_by { |bet| bet.created_at.beginning_of_month }
@bets_by_month = @bets_by_month.order("created_at")


end
不幸的是,最后一行产生了一个错误

当我加载页面时,Heroku日志当前显示此错误

NoMethodError (undefined method `order' for #<Hash:0x007f183dd33068>):
NoMethodError(未定义的#的'order'方法):

因此,
all
强制将SQL结果解析为Ruby数组,并将该数组转换为哈希。因此,调用
order
没有意义


如果您删除
all
,它应该使
ActiveRecord
尝试解析SQL中的所有内容。

这里的
group\u by
方法将
ActiveRecord关系对象
转换为
Hash
(至少在postgresql上是这样)对于
Hash
,没有
order
方法,这是导致错误的原因


如果本地和生产在该错误上存在差异,很可能是因为它们之间使用了不同的db类型。

但是
groupby
仍然是
可枚举的
groupby没有
all
group
ActiveRelation
中的同义词方法
可枚举
。ActiveRecord不知道什么是
分组依据
。ActiveRecord的
Enumerable#group_by
非常不同。AR无论如何都无法将块发送到数据库中,以便分组。