gpt4 book ai didi

ruby-on-rails - Rails 3.2 模式转储将所有 UUID 列转换为文本并使用 postgres_ext gem 破坏数组声明

转载 作者:行者123 更新时间:2023-11-29 11:30:05 24 4
gpt4 key购买 nike

将 Ruby 2.0.0-p195 与 postgres_ext gem 的 Rails 3.2.13 和 v0.3.1 结合使用.

似乎我经常遇到使用 Rails 的模式转储(不是 SQL 结构转储)的问题,其中模式转储器将 UUID 列转换为文本列并将数组转换为文本列,默认值为 "{}" . rake db:schema:dump 等常规操作会导致破坏性差异,如下所示:

-    t.string   "dbas",         :default => [],                 :array => true
- t.string "industries", :default => [], :array => true
+ t.text "dbas", :default => "{}"
+ t.text "industries", :default => "{}"
- t.uuid "uuid"
+ t.text "uuid"

如果我手动检查数据库的结构或只是询问 Rails 它认为给定属性具有什么类型的列类型,一切看起来都很好。

当然,这个问题会造成各种破坏。如果不切换到 SQL 结构转储,我如何才能获得正确的模式转储?

最佳答案

对于 Rails 3.2,您需要使用 rake db:structure:dump转储模式的 SQL 版本而不是 Ruby 版本。

Rails 4 在使用 rake db:schema:dump 时处理更多类型,这就是您正在寻找的。

关于ruby-on-rails - Rails 3.2 模式转储将所有 UUID 列转换为文本并使用 postgres_ext gem 破坏数组声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com