[英]Active record. Model.Find.last
我在Trade
和Execution
之间有一个ActiveRecord关系。 我可以得到
Trade.executions #returns all exeuctions realated to the Trade
如果我做
Trade.executions.last
似乎似乎返回基于ID的最后一个执行记录。
这是根据ID检索与Trade相关的最后一条执行记录的正确方法吗?
不,这不能保证给你最高id
的执行。 如果未指定显式排序,则记录可以按任何顺序从数据库中输出。 事实上,他们看起来像是按照id
排序,这只是一个方便的事故。
你应该做其中一个:
highest_id_execution = trade.executions.order(:id).last
highest_id_execution = trade.executions.order('id desc').first
这将为您提供具有最高id
trade
的执行。 如果你真的想要最近创建的那个,那么你应该order(:created_at)
:
most_recent_execution = trade.executions.order(:created_at).last
most_recent_execution = trade.executions.order('created_at desc').first
id
和created_at
列几乎总是以相同的顺序排列,但你应该说出你的意思是让维护代码的人更清楚。
在这两种情况下, order(:x).last
和order('x desc').first
完全相同,甚至解析为完全相同的SQL,因此请使用对您最有意义的任何一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.