47.11. Active Record

47.11.1. Přístup k SQL serveru
47.11.2. Vztahy mezi tabulkami (relace)
47.11.3. Připojení tabulky z jiné databáze
47.11.4. Validace dat

section id="rails.ActiveRecord" xreflabel="ActiveRecord"

Jak jsem již zmínil dříve, komponenta která je zodpovědná za přístup k datům v RoR se jmenuje Active Record a je reprezentována třídou ActiveRecord (gem activerecord). Tato zajišťuje vše od přístupu k databázi až k zpřístupnění dat z této databáze ve formě Ruby objektů.

Active Record klade na strukturu a pojmenování objektů v databázi určité nároky, které si dále popíšeme. Některé z nich lze obejít, a jiné jsou důležité pro správné fungování Active Record.

WORKING: Editovat.

Pro přístup k datům se používá ActiveRecord. Pokdu tedy definujeme tabulku lidí, vytvoříme model podle vzoru.

class Clovek < ActiveRecord::Base

Poznámka

Uvedený model předpokládá že máme do inflektoru zavedenou výjimku

Inflector.inflections do |inflect|
    inflect.irregular 'clovek', 'lide'
end

Jak je vidět, model pro tabulku lidí se jmenuje Clovek, ale samotná tabulka pak lide. Pokud potřebujeme v modelu určit jiné jméno tabulky, můžeme tak učinit příkazem set_table_name

class Clovek < ActiveRecord::Base
    set_table_name 'tab015'
end

ActiveRecord kladou na naše datové tabulky další omezení, která musíme dodržet. Jedním z nejdůležitějších je typ a název klíčového sloupce. ActiveRecord předpokládá že tento klíčový sloupec existuje, je typu Integer a jmenuje se id. Pokude se tento sloupec v naší tabulce jmenuje jinak, oznámíme to ActiveRecord příkazem

set_primary_key 'myid'

FIXME:

belongs_to

FIXME:

belongs_to :employee, :foreign_key => "pin"
has_one

FIXME:

has_many

FIXME:

has_many :offices, :foreign_key => "city_id"
has_and_belongs_to_many

FIXME:

validates_presence_of

FIXME:

validates_acceptance_of

FIXME:

validates_uniqueness_of

FIXME:

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 .