SORU
2 Ocak 2010, CUMARTESİ


Nasıl Raylar geçiş veritabanında bir sütun isim verebilir miyim?

Ben yanlış hashed_password yerine sütun hased_password adlı.

Nasıl geçiş bu sütunu yeniden adlandırma kullanarak veritabanı şemasını güncelleştirmek için?

CEVAP
2 Ocak 2010, CUMARTESİ


rename_column :table, :old_column, :new_column

Güncelleme:

Muhtemelen bunu yapmak için ayrı bir geçiş oluşturmak istersiniz. (Gibi yeniden FixColumnName)

script/generate migration FixColumnName
# creates  db/migrate/xxxxxxxxxx_fix_column_name.rb

O zaman senin için geçiş düzenleyin.

# db/migrate/xxxxxxxxxx_fix_column_name.rb
class FixColumnName < ActiveRecord::Migration
  def self.up
    rename_column :table_name, :old_column, :new_column
  end

  def self.down
    # rename back if you need or do something else or do nothing
  end
end

Raylar için bir güncelleme 3.1

Sırada, up down metot hala geçerli. Raylar 3.1 "knows how to migrate your database and reverse it when the migration is rolled back without the need to write a separate down method" change bir yöntem alır

rails g migration FixColumnName

class FixColumnName < ActiveRecord::Migration
  def change
    rename_column :table_name, :old_column, :new_column
  end
end

Eğer sütun bir sürü yeniden adlandırmak için, eğer mümkünse, ya da gerekli bir şey tekrar tekrar tablo ismi Tekrarlıyor.

rename_column :table_name, :old_column1, :new_column1
rename_column :table_name, :old_column2, :new_column2
...

change_table işler biraz kıvrımlara tutmak için kullanabilirsiniz.

class FixColumnNames < ActiveRecord::Migration
  def change
    change_table :table_name do |t|
      t.rename :old_column1, :new_column1
      t.rename :old_column2, :new_column2
      ...
    end
  end
end

Sen, Luke && Turadg, konuyu açtığın için teşekkür ederim.


db:migrate siz kendi işinize bakın ancak her zamanki gibi ya o zaman.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jesiel santos

    jesiel santo

    15 Ocak 2009
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • Project Mooncircle

    Project Moon

    6 Aralık 2009