rails structure.sql和schema.rb之间有什么区别

时间:2015-12-21 11:39:21

标签: ruby-on-rails ruby-on-rails-3

我知道schema.rb文件是一个ruby文件,它在运行rake迁移时被创建和修改,但是struct.sql呢。

我在一些项目schema.rb和其他的struct.sql和一些两个文件中看到过,他们在哪里配置要创建的文件。

两者之间究竟有什么区别。

生成的structure.sql是否特定于特定数据库。

1 个答案:

答案 0 :(得分:37)

主要区别在于schema.rb是数据库的Ruby表示,它通常与数据库无关。 structure.sql是数据库的SQL表示形式,它取决于您选择的特定数据库。

如果您拥有所需的特定数据库功能且​​无法由schema.rb表示,则只能使用该结构。例如,在过去,有些人将schema.rb替换为structure.sql,以便在数据库级别使用PostgreSQL JSONB字段或外键约束。

迁移现在支持这两项功能,因此您不再需要切换到structure.sql(在这些情况下)。

一般情况下,我建议您使用schema.rb