2010-05-01 16 views
16

Aquí es mi migración originales:rieles db la migración, el método no definido `to_sym', no puede entender la sintaxis

class CreateUsers < ActiveRecord::Migration 
    def self.up 
    ActiveRecord::Base.transaction do 
     create_table "users", :force => true do |t| 
     t.string :login, :limit => 40 
     t.string :name, :limit => 100, :default => '', :null => true 
     t.string :email, :limit => 100 
     t.string :crypted_password, :limit => 40 
     t.string :salt, :limit => 40 
     t.string :remember_token, :limit => 40 
     t.datetime :remember_token_expires_at 
     t.string :activation_code, :limit => 40 
     t.datetime :activated_at, :datetime 
     t.string :state, :null => :no, :default => 'passive' 
     t.datetime :deleted_at 
     t.integer :occupation_id, :null => :yes 
     t.datetime :paid_up_to_date, :date 
     t.timestamps 
     end 

Estoy tratando de cambiar el valor predeterminado de 'estado' a ser 'activa' en lugar de pasivo Aquí está mi segundo intento;

class ChangeUserStateDefault < ActiveRecord::Migration 
    def self.up 
    change_column :users, :state, :null => :no, :default => 'active' 
end 
+0

post entero el error: la parte que viene antes y después de "método no definido". La pregunta es: ¿qué clase/objeto está provocando ese error? –

+0

== ChangeUserStateDefault: migrando ====================================== - change_column (: users,: state, {: default => "active",: null =>: no}) ¡rake abortado! Ocurrió un error, esta y todas las migraciones posteriores se cancelaron: método indefinido 'to_sym 'para {: predeterminado =>" activo ",: nulo =>: no}: Hash – sysconfig

Respuesta

64

EDIT:

El error se debe a que faltaban del tipo de la columna. Usage:

change_column(table_name, column_name, type, options = {}) 

así que esto debería funcionar para usted:

change_column :users, :state, :string, :null => false, :default => 'active' 
+0

que lo arregló! ¡Gracias! – sysconfig

+0

¡Eres un salvavidas! – yossico

Cuestiones relacionadas