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ć.
- Zrobię sobie domenę w bazie, która ma swoje ograniczenia, chociażby coś takiego: integer not null default 42 check(value> 11)
- Mamy w Postgresie np. hstore albo ltree, da się to jakoś ładnie używać czy koniecznie trzeba pisać sqla ręcznie?
- 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.