我的索引中有这个
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)时,结果出现但重复,所以我的问题是为什么?查询的结果是一个特定字段的总和,但该部分也为空(问题中不需要提取该代码)
我是否缺少某些内容或使用了错误的迭代?谢谢,我是从这种语言开始的,所以这就是为什么。谢谢!
您的代码块看起来效率不高。据我所知,您正在使用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
。希望这会有所帮助。