【发布时间】:2015-01-20 15:26:23
【问题描述】:
使用 sqlite3,Rails 4.2.0。
运行rake db:migrate 时出现以下错误。
问题是迁移文件有以下内容:
t.json :blah 应该有t.column :blah, :json
我的问题是,“如何让迁移文件正确自动生成?”
我用它来生成迁移文件:
rails generate scaffold rails_app title:string blah:json
这会将t.json :blah 放入迁移文件中。
> ubuntu@host:~/rails_app$ rake db:migrate
> == 20150119183550 CreatePolreqs: migrating ====================================
> -- create_table(:rails_app) rake aborted! StandardError: An error has occurred, this and all later migrations canceled:
>
> undefined method `json' for
> #<ActiveRecord::ConnectionAdapters::TableDefinition:0x007f8466ab9680>/home/ubuntu/rails_app/db/migrate/20150119183550_create_rails_app.rb:6:in
> `block in change'
> /home/ubuntu/rails-app/db/migrate/20150119183550_create_rails_app.rb:3:in
> `change' NoMethodError: undefined method `json' for
> #<ActiveRecord::ConnectionAdapters::TableDefinition:0x007f8466ab9680> /home/ubuntu/rails_app/db/migrate/20150119183550_create_rails_app.rb:6:in
> `block in change'
> /home/ubuntu/rails_app/db/migrate/20150119183550_create_rails_app.rb:3:in
> `change' Tasks: TOP => db:migrate (See full trace by running task with
> --trace)
【问题讨论】:
-
我遇到了同样的问题。似乎迁移文件总是将 t.json :blah 写回模式文件;但是架构文件需要 t.column :blah, :json 的格式。也许它需要 Rails 团队重写模式文件的更新方式。有什么解决方案/解决方法吗?