2011-07-20 7 views
5

Bazı sütunlarda profiles adlı bir tablom var.Raylar 3.1 change_table migrasyonlu sütun ekleme

Şimdi bu tabloya change - raylarda 3.1 kullanarak birkaç sütun eklemek istiyorum. Aşağıdaki kod ile bir göç yarattı:

def change 
    change_table :profiles do |t| 
    t.string :photo 
    t.string :name 
    t.references :user 
    end 
end 

göç ​​mükemmel çalışıyor ama geri almak istediğimde

SQLite3::SQLException: duplicate column name: photo: ALTER TABLE "profiles" ADD "photo" varchar(255) 

neden Herhangi bir fikir olsun? Raylar 3.1 sütunları eklemek için

cevap

5

otomatik oluşturulan göçler biçimindedir:

class AddColumnToTable < ActiveRecord::Migration 
    def change 
    add_column :table, :column, :type 
    end 
end 

Belki de bu sözdizimi deneyin?

def change 
    change_table :profiles do |t| 
    t.string :photo 
    t.string :name 
    t.references :user 
    end 

    reversible do |dir| 
    dir.down do 
     remove_column :profiles, :photo 
     remove_column :profiles, :name 
     remove_column :profiles, :user_id 
    end 
    end 
end 

fazla bilgi için http://guides.rubyonrails.org/migrations.html#using-reversible görme: kendini nasıl geri dönülür? Göçü anlatmak gerekiyor gibi

+0

Ne add_column ile bir başvuru eklemeye ne dersiniz? Sanırım bunu şöyle yapabilirim: http://stackoverflow.com/questions/493777/add-column-for-references-rails/493802#493802 Ancak, doğrudan geçişe ekleyebilmek daha esnek olur. bir şekilde. – martnu

+0

@martnu: Bir referans eklemek sadece tabloya tip tamsayı bir ID alanı ekler - bunu 'add_column: profiles,: user_id,: integer' ile çoğaltabilirsiniz. – sevenseacat

+0

"referansı" da, "assoc_id" sütununda yararlı olan bir dizin ekler. – Jeriko

0

görünüyor. Alternatif

bunu gibi hala mevcuttur yukarı yaşlı ve aşağı yöntemlerle deneyebilirsiniz: yukarı/aşağı burada

def up 
    change_table :profiles do |t| 
    t.string :photo 
    t.string :name 
    t.references :user 
    end 
end 

def down 
    remove_column :profiles, :photo 
    remove_column :profiles, :name 
    remove_column :profiles, :user_id 
end 

Daha: http://guides.rubyonrails.org/migrations.html#using-the-up-down-methods