1. ホーム
  2. ruby-on-rails-3

[解決済み] Railsマイグレーションで、既存のテーブルにカラムを追加する

2022-02-20 17:59:51

質問

ユーザーモデルで :email カラムを追加するのを忘れていました)。

マイグレーションファイルを開いて t.string :email を行った。 rake db:migrate を取得し NoMethodError . そして、次の行を追加しました。

add_column :users, :email, :string

また rake db:migrate また NoMethodError . 私はここでステップを逃しているのでしょうか?

編集:これが移行ファイルです。

class CreateUsers < ActiveRecord::Migration  
  def self.up  
    add_column :users, :email, :string  
    create_table :users do |t|  
      t.string :username  
      t.string :email  
      t.string :crypted_password  
      t.string :password_salt  
      t.string :persistence_token  

      t.timestamps  
    end  
  end  

  def self.down  
    drop_table :users  
  end  
end

解決方法は?

すでにオリジナルのマイグレーションを実行している場合(編集する前)、新しいマイグレーションを生成する必要があります ( rails generate migration add_email_to_users email:string を実行します)。 行を含むマイグレーションファイルが作成されます。 add_column :users, email, string 次に rake db:migrate で、新しいマイグレーションが実行され、新しいカラムが作成されます。

まだオリジナルのマイグレーションを実行していない場合は、あなたがやろうとしているように、マイグレーションを編集すればよいのです。あなたのマイグレーションコードは ほとんど を削除するだけで、完璧です。 add_column の行を完全に削除します (このコードは、テーブルが作成される前に、テーブルにカラムを追加しようとしているのです。 t.string :email ということです。)