47.10.3.1. Přidání pole a indexu

Nejdříve přidání a odebrání pole, toto jsou jednořádkové příkazy v self.up a self.down migrace. Aby bylo jasné co píšu, tak se jedná o přídání nového sloupce s názvem poradi do tabulky produkty. Sloupec je číselného typu, tedy integer (:integer).

def self.up
    add_column :produkty, :poradi, :integer
end
def self.down
    remove_column :produkty, :poradi
end

Nově přidaný sloupec má sloužit jako pořadové čislo. Určuje tak vzájemné pořadí záznamů a nemá žádný další význam.

class AddPoradiToProdukty  < ActiveRecord::Migration
  def self.up
    add_column :produkty, :poradi, :integer
    add_index  :produkty, :poradi, :unique => true
    counter = 0
    Produkt.find(:all).each { |produkt|
      produkt.poradi = counter
      produkt.save
      counter += 1
    }
  end

  def self.down
    remove_index  :produkty, :poradi
    remove_column :produkty, :poradi
  end
end
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .