Dodanie obsługi dodatkowego typu danych z bazy

Jak można najprościej dodać obsługę dodatkowych typów danych, które są zdefiniowane w bazie?

Rozwiń myśl, proszę. O jakie dokładnie typy danych Ci chodzi, których nie masz wygodnie opakowanych w RoR?

Nie znam aż tak rubiego co by wiedzieć czy mogę czy nie mogę tego opakować.

  1. Zrobię sobie domenę w bazie, która ma swoje ograniczenia, chociażby coś takiego: integer not null default 42 check(value> 11)
  2. Mamy w Postgresie np. hstore albo ltree, da się to jakoś ładnie używać czy koniecznie trzeba pisać sqla ręcznie?
  3. Mamy tablice w bazie, które też mają swoją składnię do manipulacji danymi, co z nimi?

Ad.1 Walidację definiujesz w modelach klasy ActiveRecord::Base, np.:

class Domain validates_presence_of :name validates_numericality_of :whatever, :only_integer => true, :greater_than => 11 end
Ad.2 Jeśli hstore/ltree to drzewo to jest to typ danych specyficzny dla PG więc nie znajdziesz bezpośredniego przełożenia z typu AR na hstore (AR działa z różnymi silnikami baz danych). Natomiast możesz osiągnąć funkcjonalność drzewa korzystając z różnych pluginów, eg. acts_as_nested_set, betternestedset, awesome nested set, acts_as_tree sporo tego powstało.

Ad. 3. Nie zrozumiałem pytania, o jaką manipulację danymi Ci chodzi ?

hstore to hash trzymany w pojedynczym polu bazy danych + kilka pomocniczych operatorów - jego odpowiednikiem jest klasa Hash.
ltree to typ do przechowywania śceieżki w drzewie (o ile dobrze pamiętam) i on odpowiednika w podstawowych klasach/typach nie ma.

ltree nigdy nie używałem, jakoś nie trafiło się zastosowanie, natomiast hstore zdarzyło się (choć nie w railsach) i konwersja hstore -> hash przy pobieraniu rekordu IMHO byłaby bardzo przydatna.