Тот факт, что PostgreSQL 12 реализует сгенерированные столбцы, не означает, что у вас будет интерфейс через Rails PostgreSQLAdapter для проверки, является ли столбец виртуальным или нет, потому что он не реализован (пока).
Если вы видите в ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
, код для supports_virtual_columns?
довольно прост:
def supports_virtual_columns?
mariadb? || database_version >= "5.7.5"
end
В то время как код для проверки, является ли столбец виртуальным или нет, указывается как:
def virtual?
/\b(?:VIRTUAL|STORED|PERSISTENT)\b/.match?(extra)
end
, который проверяет, совпадает ли значение Extra, возвращаемое из запроса
SHOW FULL FIELDS FROM table_name;
для этого столбца, с VIRTUAL, STORED или PERSISTENT, если это так, он возвращает true.
Но это не существует в PostgreSQL аналоге. supports_virtual_columns?
вернет false в любом адаптере, где эта функция не разработана, как определено в ActiveRecord::ConnectionAdapters::AbstractAdapter
для возврата false:
# Does this adapter support virtual columns?
def supports_virtual_columns?
false
end