Кто-нибудь знает, как глобально расширить ActiveRecord? Я ищу моментальный снимок всей моей базы данных - PullRequest
0 голосов
/ 21 января 2019

На работе мне часто нужно исследовать данные в предыдущем состоянии. Например, пользователь видел чувствительную ко времени информацию в своем приложении 3 дня назад (последние 50 записей заказов). Эта информация с тех пор была отменена более новыми заказами. Чтобы повторить эту проблему для отладки, мне нужно ограничить все соответствующие данные (заказы, взаимодействия с пользователем и т. Д.) До определенной отметки времени.

Мой вопрос сводится к следующему: вместо того, чтобы определить каждую таблицу, к которой я обращаюсь (и рискую что-то упустить), существует ли чистый способ для определения всех временных меток в записях и таблицах, которые могут быть запрошены во время такого рода исследований?

Я на Rails 5.1.6

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Это звучит как работа для ARel.ARel значительно упрощает создание областей действия, основанных на времени / системных часах.Вы можете определить столько их, сколько хотите.

ARel:

scope :created_at_before, ->(timestamp) { where( arel_table[:created_at].gte(timestamp) }
scope :created_at_over_three_months_ago, { created_at_before(3.months.ago) }
#and so on and so on...

Но я должен спросить об этом ....

Вам нужен «моментальный снимок вашей базы данных».

Сделать резервную копию ????? Резервная копия вашей базы данных - это моментальный снимок вашей базы данных.Восстановите эту резервную копию на отдельной машине.Вы даже можете автоматизировать создание этих резервных копий с помощью cron, Heroku Scheduler или аналогичных платформ.

0 голосов
/ 21 января 2019

интересный вопрос.

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

Проверьте этот драгоценный камень: https://github.com/scenic-views/scenic, чтобы получить представление о том, как вы можете реализовать представления, хотя вам не обязательно нужен драгоценный камень.

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

Надеюсь, это поможет!

...