Какой обратный вызов ActiveRecord использует для записи метки времени? - PullRequest
0 голосов
/ 02 июня 2011

Мне просто интересно, знает ли кто-нибудь из вас, когда ActiveRecord использует свою «магию» для записи метки времени (например, made_at, updated_at).

Что я имею в виду, когда, при каком обратном вызове?(если AR вообще использует обратный вызов).

Я спрашиваю об этом, потому что хочу создать автообновляемый столбец (порядковый номер записи для каждого объекта) и хочу повторить AR-способ сделать это какнасколько это возможно.

РЕДАКТИРОВАНИЕ: Кажется, что AR делает это между after_validation и before_create / before_update.Вы можете сделать некоторые тесты для этого, создав проверку присутствия для столбца созданного_каталога и вставив новую запись с пустым созданным_текстом, она выдаст ошибку.

Ответы [ 2 ]

1 голос
/ 09 июля 2013

В Rails 3.2.12 этот код находится в lib/active_record/timestamp.rb.

Как вы упомянули в своем вопросе, и DGM предлагает, Rails будет обновлять временные метки при создании или обновлении, поэтому ваш код вставляется в before_create и before_update должны работать.

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

1 голос
/ 02 июня 2011

Я не знаю, где AR это делает, но подходящее место для того, что вы описываете, звучит как before_create

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...