2014-04-25 6 views
20

Sono in esecuzione Rails 3.2.17 e Postgres 9.3.4. Ho creato un nuovo modello ActiveRecord usando "rails generate" e uno dei tipi di colonna è json. La mia intenzione è di usare il tipo di colonna JSON in Postgres.Rails 3: errore di migrazione quando si utilizza json come tipo di colonna in un ActiveRecord supportato da Postgres

La migrazione db contiene questo codice:

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 

Quando cerco di migrare con "rake db: migrate" Ottengo questo errore:

-- create_table(:things) 
rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

undefined method `json' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0x007fea3d465af8>/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' 

È questo il modo giusto per aggiungere un colonna json a un ActiveRecord? Non riesco a trovare alcuna documentazione o esempi. Grazie!

+2

Provare a dare come questo 't.column: json_data,: json' – Pavan

risposta

29

Cambia la migrazione come

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 

E per default rake db compiti esaminerà schema.rb (che non sarà il caso per Postgres), così nel application.rb cambiamento per

config.active_record.schema_format = :sql 
Problemi correlati