Ruby on rails 来自rails控制器的空白哈希?

Ruby on rails 来自rails控制器的空白哈希?,ruby-on-rails,ruby,hash,Ruby On Rails,Ruby,Hash,我在rails应用程序中有一个自定义方法,如下所示。 我已经在rails控制台中测试了sql,它返回如下id=>vu这样的散列 def self.vu ids results = User.select('tests.dpi, sum(worker) as vu') .joins{tests} .where("tests.dpi in (?)", ids) .group('tests.dpi') hash = {} results.each

我在rails应用程序中有一个自定义方法,如下所示。 我已经在rails控制台中测试了sql,它返回如下id=>vu这样的散列

  def self.vu ids
    results = User.select('tests.dpi, sum(worker) as vu')
    .joins{tests}
    .where("tests.dpi in (?)", ids)
    .group('tests.dpi')

    hash = {}
    results.each {|record| hash[record.dpi] = record.vu}
    hash
  end
为了在我的控制器中显示,我有:

  def show
    ids = User.find(params[:id])
    logger.debug "test: #{ids.id}"
            #See ID at this point and SQL query runs

    vu = Hash.new
    vu =User.vu ids.id
    logger.debug "value: #{vu}"
    #Blank

    vu = vu[ids.id]
    logger.debug "value: #{vu}"
    #blank no hash value?

  end

我可以看到SQL查询正确运行,它在控制台中工作,但它没有在哈希中设置值?我明显错过了什么?谢谢。

很可能是字符串。请尝试vu[id.id.to_s]。如果有效,请将此代码发布到codereview.stackexchange.com,因为它可能需要一些重大的重构。如果您登录到block | record | hash[record.dpi]=record.vu中,您是否获得了正确的信息?