Ruby on Rails: Найдите запись с самым низким значением определенного столбца

Символизация - это процесс перевода адресов в символы (функции, методы и т. Д.). Без журнала сбоев, который содержит эти адреса, символика не имеет смысла. Вы не можете переводить адреса, которых у вас нет. Но откуда появился вывод, который вы перечислили? Похоже, это может быть частью большего журнала. Вы отметили проблему Crashlytics - этот отчет пришел из их службы?

В журнале вы включили некоторую полезную информацию. Хорошая новость в том, что она говорит вам, что у вас куча коррупции. malloc назвал abort, потому что он обнаружил несоответствие с его внутренними структурами. Кроме того, крайне маловероятно, что символическая трассировка стека поможет вам, потому что повреждение кучи редко, если вообще когда-либо, вызывается функциями, расположенными дальше по стеку.

Имейте в виду, что авария, которую вы видите здесь, является эффектом . Чтобы устранить эту проблему, вам нужна причина , и трассировка стека не даст вам этого в этой ситуации.

Есть еще плохие новости. Трудно, и часто даже невозможно, рассуждать о кучной коррупции. Воспроизведение ошибки также может быть невозможным, поскольку повреждение памяти обычно не является детерминированным. Как вы заметили, сбой выглядит случайным. Это потому, что это, вероятно, так.

То, что я бы порекомендовал сделать здесь, - это использовать различные инструменты, предоставляемые Apple, для отладки такого рода проблем.

  • Ищите другие сбои, связанные с повреждением кучи
  • Попробуйте Zombies в инструментах
  • Попробуйте malloc scribble или guardmalloc, два других хороших инструмента отладки памяти [ 115]

чрезвычайно очень часто бывает, что одна ошибка, приводящая к повреждению кучи, вызывает множество различных видов сбоев. Это может быть чрезмерным выпуском objc, поэтому я также следил за исключениями selectorNotRecognized. Эти сбои могут дать вам больше подсказок о том, какой тип объекта переиздан.

Удачи!

8
задан John Topley 11 April 2009 в 22:44
поделиться

3 ответа

Это будет работать:

earliest = Model.first(:order => 'column asc')

—Где Модель - это название класса вашей модели и column - это имя столбца даты и времени. Он сгенерирует этот оператор SQL:

SELECT * FROM `Model` ORDER BY column asc LIMIT 1
18
ответ дан 5 December 2019 в 07:13
поделиться
Table.first(:order => 'created_on')
3
ответ дан 5 December 2019 в 07:13
поделиться

Я не уверен насчет RoR, но в SQL вы можете просто отсортировать результаты запроса по полю datetime и ограничить количество результатов до 1.

SQL:

SELECT field1,field2,... FROM table ORDER BY datefield LIMIT 1;

Или может быть в Ruby (не уверен):

table.find(:all, :limit => 1, :order => 'datefield.asc')
0
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: