Rails 3:在Postgres支持的ActiveRecord中使用json作为列类型时出现迁移错误
我正在运行Rails 3.2.17和Postgres 9.3.4。 我使用“rails generate”创建了一个新的ActiveRecord模型,其中一个列类型是json。 我的目的是在Postgres中使用json列类型。
db迁移包含以下代码:
class CreateThing < ActiveRecord::Migration def change create_table :things do |t| t.integer :user_id t.json :json_data t.timestamps end add_index :things, :user_id end end
当我尝试使用“rake db:migrate”进行迁移时出现此错误:
-- create_table(:things) rake aborted! StandardError: An error has occurred, this and all later migrations canceled: undefined method `json' for #/Users/../db/migrate/20140425030855_create_things.rb:7:in `block in change' /Library/Ruby/Gems/2.0.0/gems/activerecord-3.2.17/lib/active_record/connection_adapters/abstract/schema_statements.rb:160:in `create_table'
这是将json列添加到ActiveRecord的正确方法吗? 我找不到任何文档或示例。 谢谢!
改变你的迁移
class CreateThing < ActiveRecord::Migration def change create_table :things do |t| t.integer :user_id t.column :json_data, :json # Edited t.timestamps end add_index :things, :user_id end end
默认情况下, rake db
任务将查看schema.rb(postgres不会出现这种情况)所以在application.rb中将其更改为
config.active_record.schema_format = :sql
在application.rb中设置以下内容
config.active_record.schema_format = :sql
然后将使用structure.sql而不是schema.rb从头开始创建数据库。 更多信息 – https://github.com/diogob/activerecord-postgres-hstore
- 显示消息数组中的最后一条消息
- 根据用户历史自定义交易应用程序的主页和电子邮件:如何在Rails / postgreSQL上以正确的方式执行此操作?
- 计算Active Admin仪表板(Rails,Active admin 1.0,Postgresql数据库,postgres_ext gem)中序列化属性(数组)中值的出现次数
- 升级到Rails 4后,postgresql服务器上的内存泄漏
- -bash:pg_dump:找不到命令
- 在更新数据库提交后运行rails代码,没有after_commit
- 无法安装pg gem,“mkmf.rb无法找到ruby的头文件”(Mac OSX 10.6.5)
- 如何在Rails中基于外键列选择唯一记录?
- Ruby Datamapper .count始终返回0