Odkazy:
Pokud chceme připojit některé tabulky z jiné databáze, začneme od konfigurace připojení k databázi. Do souboru config/database.yml vložíme nové sekce pro produkční a vývojovou databázi. Aplikace k jejimž datům se chceme připojit je taktéž v RoR a jmenuje se bestapp. Její produkční databáze je bestapp_production a vývojářská databáze bestapp_development. Do konfiugrace si tedy přidáme dvě sekce:
bestapp_production: adapter: postgresql socket: /var/run/postgresql encoding: UTF8 database: bestapp_production username: bestak password: jehoheslo bestapp_development: adapter: postgresql socket: /var/run/postgresql encoding: UTF8 database: bestapp_development username: vyvojar password: mojeheslo
Důležité je správné pojmenování sekcí, které nám zjednoduší kód. Vlastní databáze se mohou jmenovat jakkoliv. Snažím se ovšem zachovávat konvenci že se databáze jmenuje po aplikaci a má ke jménu doplněno development nebo production.
Máme tedy připravené konfigurace připojení k databázím. Pokročíme tedy k dalšímu kroku což je vytvoření abstrakní třídy pro připojení k těmto databázím. Já tuto třídu pojmenovávám po aplikaci ke které se připojuji. V našem případě to tedy bude Bestapp:
class Bestapp < ActiveRecord::Base
self.abstract_class = true
establish_connection "bestapp_#{RAILS_ENV}"
endV příkazu pro připojení k databázi establish_connection jsme s výhodou využili konvenci v pojmenování konfigurací. Protože proměnná RAILS_ENV obsahuje reži ve které server běží (developlment/production), zajistí nám připojení k té správné databázi jak na vývojářském tak na produkčním serveru..
Nyní si již můžeme připojit vlastní datové tabulky:
class Clovek < Bestapp
has_many :funkce
endJak jsem ukázal, můžeme navázat mezi tabulkymi v různých databázích i relační vztahy. Ale tady bych byl opatrný, protože není zajištěno že bude vše fungovat tak jako kdyby tabluky byly ve stejné databázi. V projektu který jsem psal mi k mé spokojenosti vztah has_many a belongs_to mezi databázemi fungoval k mé spokojenosti.
