23 May
matte

matte il 23 May 2007 parla di Altro

Alter Column and Migrations

Oggi mi sono trovato a dover cambiare il tipo di una colonna di una tabella, ma non ho trovato un comando “alter_column” nelle migrazioni di Rails per fare quello che volevo. Ho allora provato con un comando per MySQL direttamente, riuscendoci con il seguente codice:

    1 class AlterColumn < ActiveRecord::Migration
    2   def self.up
    3     execute "ALTER TABLE table_name MODIFY COLUMN column_name text default NULL"
    4   end
    5 
    6   def self.down
    7     execute "ALTER TABLE table_name MODIFY COLUMN column_name varchar(255) default NULL"
    8   end
    9 end

In questo codice ho fatto una migrazione di nome AlterColumn, che cambia il campo column_name della tabella table_name da varchar(255) a text. Dopo mi è capitato di trovare il comando che mi serviva: era “change_column”. Potete quindi utilizzare anche questa sintassi evitando di incorrere in diversi comandi SQL passando da un database ad un altro:

    1 class AlterColumn < ActiveRecord::Migration
    2   def self.up
    3     change_column :table_name, :column_name, :text
    4   end
    5 
    6   def self.down
    7     change_column :table_name, :column_name, :string
    8   end
    9 end

Per non sbagliare ecco l’rdoc per la classe Migration.

1 Commento a “Alter Column and Migrations”

  1. grosser il 26 December 2008 alle 21:52 dice:

    Hmm i do not speak french, but this may help you..

    http://pragmatig.wordpress.com/2008/12/26/alter-column-the-missing-migration-method-for-activerecord/

    cheers mg

Scrivi un commento