我知道这个模式.rb文件是一个ruby文件,在运行rake迁移时会创建和修改它,但 struct 如何呢.sql.

我在一些项目中看到了模式.rb和其他 struct .sql和在某些两个文件中,它们在哪里配置要创建的文件.

两者之间到底有什么区别.

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

推荐答案

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

只有当您有特定的数据库功能,而这些功能不能用schema.rb来表示时,才可以使用该 struct .例如,在过go ,有些人为了在数据库级别使用PostgreSQL JSONB字段或外键约束,将schema.rb替换为structure.sql.

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

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

Ruby-on-rails相关问答推荐

如何测试自定义路由?

在控制器操作中适当使用ActiveModel Dirty

合成轨道布局

Sidekiq with Rails - 控制台与 rake 任务中的不同 Sidekiq 实例

尽管安装并需要 pry-rails gem,但 Rails 容器内出现未定义方法‘pry’错误

如何在测试期间为 Rails 应用程序启用 Rails.cache 会话对象

为什么 Image_tag 产生images/...而不是assets/....?

Rails 3 的data-method='delete'如何优雅地降级?

Rails 模型:您将如何创建一组预定义的属性?

Rails 3:验证组合值

Rails:使用 link_to 创建不带 href 的链接

如何获取包含表的列名的数组

Rails 3.1 插件 gem、虚拟测试应用程序、rspec

控制器 helper_method

在rails国际化yml文件中传递变量

我怎样才能看到水豚在失败的黄瓜步骤中发现了什么?

通过get in rails传递参数数组

Heroku - 在浏览器中显示当前提交的哈希

您将如何解析 Ruby 中的 url 以获取主域?

如何在 Ruby 类/模块命名空间中翻译模型?