===== Creating And Running Migrations ==== ==== Creating A Migration ==== A migration uses an installer file. The one illustrated here is app/installers/refmt_installer.php. It is used to illustrate ActiveRecord's ability to maintain several languages in a database table. createTable('mono_langs', " id, lang, name "); $this->createTable('multi_langs', " id, en_name, fi_name, sv_name "); } function down_1() { $this->dropTable('mono_langs','multi_langs'); } } ?> ==== Running a migration ==== In a terminal window, change the directory to the top of your project. Then enter ./script/migrate Refmt install "Refmt" is the part of the class name before "Installer". If the tables don't exist, they will be created; if they do exist, they won't be overwritten. The significant thing here that makes the use of this file a migration is that you may add additional up and down functions to add tables, indices, columns, etc. A down function should always undo what the corresponding up function does. ActiveRecord keeps track of where you are in your migration. The first time you do an install, up_1() will be executed. If you then do an uninstall, down_1() will be executed. Each successive install will cause the succeeding up_x() to be run (where x increments the previous up function by 1). Let's say that you have functions up_1(), down_1(), up_2(), and down_2(). The first time you execute ./script/migrate Refmt install function up_1() will be executed. The second time you run it, function up_2() will be executed. If you execute ./script/migrate Refmt uninstall at this point, function down_2() will be executed. The condition of your tables should be as defined in function up_1(). You may add as many up_x() and down_x() functions as you need to, incrementing x by 1 each time.