47.9.1. Databázový model

section id="rails.model" xreflabel="model"

Odkazy:

Implementuje datový model / obchodní objekty. Rail používá pro reprezentaci datového modelu třídu ActiveRecord.

V RoR je pro práci s datovám modelem použita třída ActiveRecord. Tato třída má určité požadavky na strukturu databáze a datové tabulky.

Pokud názvy našich tabulek v databázi nejsou v angličtině a nevyhovují nárokum ActiveRecord, je třeba provést před vytvořením modelu úpravy v inflectoru. Zavedeme tedy do konfigurace config/environment.rb tvar jednotného a množného čísla jména tabulky. Například pro tabulku středisek jenž se jmenuje strediska zavedeme jednotné a množné číslo tohoto jména.

Inflector.inflections do |inflect|
    inflect.irregular 'stredisko', 'strediska'
end

Hned si ověříme, jestli vše funguje jak potřebujeme.

$ script/console
Loading development environment
>> Inflector.pluralize 'stredisko'
=> "strediska"
>> Inflector.singularize 'strediska'
=> "stredisko"

Teď teprve můžeme přistoupit k vygenerování modelu. Model generujeme příkazem script/generate model.

script/generate model [volbynázev_modelu

V našem případě, kd máme tabulku středisek pojmenovanou strediska, vytvoříme model pojmenovaný jednotným číslem Stredisko.

$ script/generate model --svn Stredisko
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/stredisko.rb
A         app/models/stredisko.rb
      create  test/unit/stredisko_test.rb
A         test/unit/stredisko_test.rb
      create  test/fixtures/strediska.yml
A         test/fixtures/strediska.yml
      exists  db/migrate
      create  db/migrate/002_create_strediska.rb
A         db/migrate/002_create_strediska.rb

Například model pro datovou tabulku hosts vytvoříme a přidáme do subversion příkazem

$ scrip/generate model --svn Host
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/host.rb
A         app/models/host.rb
      create  test/unit/host_test.rb
A         test/unit/host_test.rb
      create  test/fixtures/hosts.yml
A         test/fixtures/hosts.yml
      create  db/migrate
A         db/migrate
      create  db/migrate/001_create_hosts.rb
A         db/migrate/001_create_hosts.rb
$
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 .