当我在每个环轨内使用查询时,结果为空

问题描述 投票:0回答:1

我的索引中有这个

def index
  @res = Array.new
  Hours.pluck(:user_id).each do |id|
    @get_data = Hours.where("status >= :status",{status: params[:status]}).where(:user_id => id)
    @res.push @get_data
  end
  json_response(@res)
end

运行端点时,我得到:

[]

当我使用pluck(:user_id)时,结果出现但重复,所以我的问题是为什么?查询的结果是一个特定字段的总和,但该部分也为空(问题中不需要提取该代码)

我是否缺少某些内容或使用了错误的迭代?谢谢,我是从这种语言开始的,所以这就是为什么。谢谢!

arrays ruby-on-rails iteration each
1个回答
0
投票

您的代码块看起来效率不高。据我所知,您正在使用Hours.pluck(:user_id)从Hours表中获取所有user_id,并循环访问每个块。然后,再次在每个循环中对同一小时表进行多个查询调用,以检查params [:status]值。

我认为您可以简单地执行此操作以获取输出:

def index
  @res = Hours.where("status >= ?", params[:status])
  @res.each do |row|
    # Perform your task here.
  end
  json_response(@res)
end

要回答另一个问题,为什么调用pluck(:user_id)时会有重复的结果,它会从表中提取所有结果并存储在数组中。您可以执行此操作Hours.pluck(:user_id).uniq甚至更好Hours.select(:user_id).distinct。希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.