Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么ActiveRecord不接收这些获取聚合函数_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 为什么ActiveRecord不接收这些获取聚合函数

Ruby on rails 为什么ActiveRecord不接收这些获取聚合函数,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,直接在带有Postgres的ActiveRecord上使用聚合函数进行查询似乎可以正常工作 ActiveRecord::Base.connection.execute(" SELECT created_at::date as date, sum(item1_count) as sum_item1, sum(item2_count) as sum_item2, sum(item3) as sum_item3 from items GROUP by c

直接在带有Postgres的ActiveRecord上使用聚合函数进行查询似乎可以正常工作

ActiveRecord::Base.connection.execute("
  SELECT created_at::date as date, 
    sum(item1_count) as sum_item1, 
    sum(item2_count) as sum_item2,
    sum(item3) as sum_item3 from items 
  GROUP by 
    created_at::date ORDER BY date desc").to_a
返回类似这样的值,这是可以的

[
  {
              "date" => "2014-01-23",
         "sum_item1" => "3239",
        "sum_item2" => "90",
      "sum_item3" => "0.00000"
  },
  {
              "date" => "2014-01-22",
         "sum_item1" => "1981",
        "sum_item2" => "19",
      "sum_item3" => "0.00000"
  }
]
例如,问题是当尝试使用作用域执行相同操作时

class Item < ActiveRecord::Base
  scope :myscope, -> { 
    select("created_at::date as date, sum(item1_count) as sum_item1, 
      sum(item2_count) as sum_item2, 
      sum(item3) as sum_item3")
   .group("created_at::date")
   .order("date desc") }
end

如何将聚合函数传递给作用域?

我可能有点不对劲,但我记得必须将聚合字段名用引号括起来,例如selectsumitem1\u count as'sum\u item1'尝试过,但似乎没有什么不同。您是否尝试过对对象调用聚合方法来检查它是否存在?像Item.first.sum_item2一样,我只是做了一个快速测试,即使对象检查器没有打印出聚合字段,它们仍然存在,并且调用它们的方法返回正确的值。
[
  #<Item:0x00000103cc3d38> {
      :id => nil,
    :date => Thu, 23 Jan 2014
  },
  #<Item:0x00000103cc39a0> {
      :id => nil,
    :date => Wed, 22 Jan 2014
  }
]