此代码仅显示数组model.request_reports
为了获得最新信息,我必须循环并比较当前的情况
最后一次保存report.updated_at
的{{1}}。有一件事要找
out是report.update_at value
字段的类,以及如何将它们相互比较。该课程为update_at
我需要跟踪具有最新ActiveSupport::TimeZone
的报告的数组索引作为循环,以便我可以在循环后访问它。
问题是,我不知道该怎么做:
updated_at
答案 0 :(得分:0)
添加到@meagar评论。您应该使用DB对表进行排序。
据说我们需要知道你正在使用什么数据库,因为确切的命令各有不同。
Mongo w / Mongoid将是Model.order_by(:updated_at => 'desc').first
答案 1 :(得分:0)
我的循环必须通过数组并检查最大日期值,因为在我使用的系统中,它会自动按字段排序报告数组" due_at"这不是报告最近更新的记录。下面的代码对我有用。
msg = ""
reports_arr = model.request_reports
last_modified_report = model.last_modified_report
recent = nil
recent_report = nil
reports_arr.each_with_index do |report,index|
updated_at = report.updated_at
if index == 0
recent = updated_at
recent_report = report
end
if updated_at > recent
recent = updated_at
recent_report = report
end
last_modified_report = recent_report
end
msg = msg + "#{recent}---"
msg = msg + "#{recent_report}---"
msg = msg + "#{last_modified_report}"
model.last_modified_report = last_modified_report
model.save(validate: false)
msg
答案 2 :(得分:0)
如果您绝对无法直接在数据库中查询所需信息,那么OP的答案才会有用。我假设您只想要索引,以便找到最新的索引?
即使自动排序在一列上,您对数据的查询也可以将其排序在不同的列上。
model.request_reports.order_by(:updated_at => 'desc').first
如果您的默认作用域弄乱了您的查询,您可以要求一个未列表的列表,但我怀疑默认排序会导致任何问题。
model.unscoped.order_by(:updated_at => 'desc').first
您可以将已经编写的查询串在一起:即使request_reports是您拥有的查询或范围,这也很有用。
这比获取所有内容和循环更便宜 - 如果可以的话,你最好找到一种方法来获取db查询中所需的信息。