Как пометить столбец для удаления или исключения в ActiveRecord PostgreSQL? - PullRequest
0 голосов
/ 06 марта 2019

Rails отслеживает существующие столбцы ( здесь происходит волшебство ) и использует его при загрузке объединенных таблиц с .eager_load. .eager_load создает запрос SQL, который выглядит следующим образом:

SELECT "models"."id" AS t0_r0,
...
"models"."deprecated_column" as t0_r1,
... as t1_r0,
...

это хорошо работает для большинства ситуаций. Но становится проблематичным при опускании столбцов.

Интересно, есть ли способ рельсовой маркировки столбца для удаления, чтобы он не был выбран для будущих активных загрузок.

Чтение исходного кода активной записи, похоже, что если бы pg_attribute имел attisdropped = true, тогда столбец не был бы выбран. Но я не уверен, как установить его с помощью миграций activerecord.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Я нашел ответ в Rails docs, там ignored_columns, который нужно установить: https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-ignored_columns-3D

Как только обновленный код будет развернут, будет безопасно удалить столбец.

0 голосов
/ 06 марта 2019

Я не уверен, что именно вам нужно, но похоже, что это может помочь:

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