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