2012-09-23 17 views
14

Modellerden birinin id sütununa sahip olmadığı bir Rails uygulamasına sahibim.Bir geçişte Kimlik sütunu ekle

create_table(:the_model, :id => false) do |t| 
    # columns 
end 

Şimdi, yeni bir göç, ben (veritabanı belirli sql kullanarak değil) bir Raylar standart bir şekilde id sütun eklemek istiyorum: Biraz araştırma yaparak ben onu oluşturan göç buldum. Bunu nasıl yapabilirim?

change_table(:the_model, :id => true) do |t| 
end 

cevap

31

Ya elle id sütununu ekleyebilirsiniz:

Zaten başarılı olamadı bu denedik

add_column :table_name, :id, :primary_key 

veya verileri açık (veya yedekleme), bu göçe geri alma, kurtulmak Seçenek :id => false ve yeniden geçiş.

+0

Komut çalıştı! Her ne kadar bir birincil anahtara sahip olduğu için tabloyu yeniden oluşturmamıza ('drop_table' ve 'create_table') son verdim. Çok teşekkürler! – alf

+0

Bu da işe yarıyor! Sorun değil. – cdesrosiers

+2

Geçişi çalıştırarak, varolan kayıtların kimlik sütunu otomatik olarak benzersiz kimlik değerleriyle doldurulur mu? Değilse, sistemi mutlu tutmak için nasıl/neyi ataırım? –

5

Zaten cevabı burada var, ama göç dosya adının sözdizimi en

rails generate migration AddIdToModel id:integer 

Bak sütun açıklaması izledi SütunAdı TableName Ekle bu durumda hepsini yerine getiren bir tek kılıftır. Size başka bir şey için düşünüyorsanız

class AddIdToModel < ActiveRecord::Migration 
    def change 
    add_column :models, :id, :integer 
    end 
end 

Şimdi bu satırı değiştirebilir aşağıda gibi bir şey üretecektir. ve sadece rake db:migrate'u çalıştırın.

+3

'raylar g geçiş add_id_to_model id: primary_key' sizin için her şeyi yapıyor – dubadub

2

Sen

rails g migration add_id_to_model id:primary_key:integer benim için çalıştı söz gerekmez.

İlgili konular