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
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: