Нет, это не гарантирует вам выполнение с самым высоким id
. Если вы не укажете явный порядок, то записи могут выходить из базы данных в любом порядке. Тот факт, что они выглядят так, как будто они отсортированы по id
, просто удобная случайность.
Вы должны сделать одно из следующих действий:
highest_id_execution = trade.executions.order(:id).last
highest_id_execution = trade.executions.order('id desc').first
Это даст вам исполнение для trade
с самым высоким id
. Если вы действительно хотите самый последний созданный, вам следует вместо этого 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, так что используйте тот, который вам наиболее подходит.