yon*_*ron 5 postgresql uuid ruby-on-rails postgres-ext
使用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"
Run Code Online (Sandbox Code Playgroud)
如果我手动检查数据库的结构或只是询问Rails它认为给定属性有哪种类型的列类型,一切看起来都很好.
当然,这个问题会造成各种各样的破坏.如果没有切换到SQL结构转储,我怎样才能获得正确的架构转储?
使用Rails 3.2,您需要使用rake db:structure:dump转储模式的SQL 版本而不是Ruby 版本。
Rails 4 在使用时可以处理更多类型rake db:schema:dump,这正是您所寻找的。