В чем разница между rails structure.sql и schema.rb

Мне известно, что файл schema.rb является рубиновым файлом, и он создается и модифицируется, когда выполняется миграция грабли, но как насчет структуры .sql.

Я видел в некоторых проектах schema.rb и в других структура .sql и в некоторых обоих файлах, где они настраивают, какой файл создавать.

В чем же разница между ними.

Создается ли struct.sql для конкретного БД.

Ответы

Ответ 1

Основное отличие состоит в том, что schema.rb представляет собой представление Ruby базы данных, и оно, как правило, не зависит от базы данных. structure.sql вместо этого представляет собой SQL-представление базы данных и зависит от выбранной вами конкретной базы данных.

Вы используете эту структуру только в том случае, если у вас есть определенные функции базы данных, которые вам нужны, и которые не могут быть представлены schema.rb. Например, в прошлом некоторые люди заменяли schema.rb на structure.sql, чтобы использовать поля PostgreSQL JSONB или ограничения внешнего ключа на уровне базы данных.

Обе функции теперь поддерживаются в миграциях, поэтому вам больше не нужно переключаться на structure.sql (в этих случаях).

В общем, я предлагаю вам использовать schema.rb.