2010-05-01 4 views
16

Hier ist meine ursprüngliche Migration:Schienen db Migration, nicht definierte Methode `to_sym‘, kann nicht herausfinden Syntax

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 

Ich versuche, die Standardeinstellung ‚Zustand‘ zu ändern, anstatt zu sein ‚aktiv‘ von Passiv Hier ist mein zweiter Versuch;

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

Beitrag der gesamte Fehler: der Teil, der vor und nach dem "nicht definierte Methode" kommt. Die Frage ist, welche Klasse/Objekt diesen Fehler verursacht? –

+0

== ChangeUserStateDefault: Migration ====================================== - change_column (: Benutzer,: state, {: default => "aktiv",: null =>: nein}) Rake abgebrochen! Ein Fehler ist aufgetreten, diese und alle späteren Migrationen wurden abgebrochen: undefined Methode 'to_sym 'für {: default =>" aktiv ",: null =>: nein}: Hash – sysconfig

Antwort

64

EDIT:

Der Fehler ist, weil Sie den Typ der Spalte fehlten. Usage:

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

So sollte dies für Sie arbeiten:

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

das hat es behoben! Vielen Dank! – sysconfig

+0

Sie sind ein Lebensretter! – yossico

Verwandte Themen