如何使用json自动生成rake迁移文件

如何使用json自动生成rake迁移文件,json,migration,rake,Json,Migration,Rake,使用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$ rak

使用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)
>ubuntu@host:~/rails\u应用程序$rake数据库:迁移
>==20150119183550 CreatePolreqs:迁移====================================
>--创建_表(:rails_app)rake中止!StandardError:发生错误,此迁移和所有后续迁移已取消:
> 
>未定义的方法“json”
>#/home/ubuntu/rails_app/db/migrate/20150119183550_create_rails_app.rb:6:in
>‘改变中的阻碍’
>/home/ubuntu/rails app/db/migrate/20150119183550\u create\u rails\u app.rb:3:in
>'change'NoMethodError:的未定义方法'json'
>#/home/ubuntu/rails_app/db/migrate/20150119183550_create_rails_app.rb:6:in
>‘改变中的阻碍’
>/home/ubuntu/rails\u app/db/migrate/20150119183550\u create\u rails\u app.rb:3:in
>`change'Tasks:TOP=>db:migrate(通过使用
>--跟踪)

sqlite3适配器还不支持json列

postgres:支持它

要切换数据库,请更新文件并替换

gem 'sqlite3' 

切换数据库的另一种方法是使用“text”列而不是“json”,但这需要自己序列化json,并且您将无法获得postgres提供的任何漂亮的json查询运算符

看起来sqlite3最近添加了对json列的支持,因此sqlite ruby适配器将来可能会支持这一点:


我遇到了同样的问题。似乎迁移文件总是将t.json:blah写回模式文件;但是模式文件需要t.column:blah,:json的格式。也许这需要rails团队重写模式文件的更新方式。有什么解决方案/解决办法吗?
gem 'pg'