主要区别在于schema.rb是
数据库的
Ruby表示形式,它通常与
数据库无关. struct.
sql是
数据库的
sql表示形式,它取决于您选择的特定
数据库.
如果您具有需要的特定数据库功能,并且不能由schema.rb表示,则只使用该结构.例如,在过去,有些人用schema.rb替换了struct.sql,以便在数据库级使用Postgresql JSONB字段或外键约束.
迁移中现在支持这两个功能,因此您不需要再转换到struct.sql(在这些情况下).
一般来说,我建议你使用schema.rb.