ruby-on-rails - rails structure.sql 和 schema.rb 有什么区别

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

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

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

两者究竟有什么区别。

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

最佳答案

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

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

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

一般来说,我建议你使用 schema.rb

关于ruby-on-rails - rails structure.sql 和 schema.rb 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34394823/

相关文章:

sql - Ruby 后续子查询发生在主查询之前

ruby-on-rails - 带有label_tag的check_box_tag点击操作

javascript - 使用 Jquery .click 显示/隐藏切换,适用于新用户,但不适用于种子

ruby-on-rails - 在 Action Mailer 中设置实例变量?

ruby-on-rails - Rails 3 + CarrierWave + Rspec : model validation

ruby-on-rails - Rails - 返回嵌套属性的所有值,而不仅仅是 'pointer'

ruby-on-rails - 使用 pluginaweek 的 state_machine,我可以在事件期间引用 activerecord 对象吗?

ruby-on-rails - 帮助加入 Rails 3

ruby-on-rails - 找不到 PostgreSQL 客户端库 (libpq)

ruby-on-rails - rails 3.1 生成 CSV 文件