【问题标题】:Porting a Rails 1.2 app, schema.rb generation messed up移植 Rails 1.2 应用程序,schema.rb 生成搞砸了
【发布时间】:2011-02-01 19:55:54
【问题描述】:

rake db:schema:dump rake db:test:prepare

全部使用下面生成的schema.rb:

t.column "cost_per_license", :decimal, :limit => 8, :default => #

运行 rake db:migrate 不会导致此问题,因为它只使用迁移文件(而不是生成的 schema.rb)

有人在 Rails 1.2 中看到过这个吗?以下几行正在生成此架构:

126_create_accounts.rb: t.column :cost_per_license, :decimal, :precision => 8, :scale => 2, :default => 0

我已经尝试过 Ruby 1.8.6、1.8.7 和 Rails 1.2.1 和 1.2.6 ——所有生成的 schema.rb 都有相同的语法错误。

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    如果您对生成的 schema.rb 有疑问,一个技巧是您可以覆盖模块 ActiveRecord 类 SchemaDumper 和生成特定行的方法,只需将 ':default => #' 替换为 ':default => 0'

    对于根本原因,您能否在特定表上执行 show create table(如果您使用的是 mysql)?是对所有具有默认值的列还是仅针对 cost_per_license 一个?

    【讨论】:

      【解决方案2】:

      想通了:

      有一个供应商/插件(特别是 spatial_adapter)正在使用非常旧版本的 ActiveRecord 的 table() 修补 SchemaDumper 的 table() 函数(要么非常旧,要么非常糟糕。)

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多