使用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)
答案 0 :(得分:0)
sqlite3适配器不支持json列(尚未)。
postgres支持:http://guides.rubyonrails.org/v4.2/active_record_postgresql.html。
要切换数据库,请更新Gemfile并替换
gem 'sqlite3'
与
gem 'pg'
切换数据库的另一种方法是使用&#39;文本&#39;列而不是&#39; json&#39;,但这需要自己序列化json并且你不会获得postgres提供的任何花哨的json查询运算符。
看起来sqlite3最近添加了对json列的支持,所以scite-ruby适配器可能在将来的某个时候支持这个: