Umożliwia dziedziczenie z innej klasy, która nie jest klasą DM.
Umożliwia także dodawanie funkcji DM do klasy w locie. Oto metoda klasy z modułu Pracuję teraz:
def datamapper_class
klass = self.dup
klass.send(:include, DataMapper::Resource)
klass.storage_names[:default] = @table_name
klass.property(:id, DataMapper::Types::Serial)
klass.property(:created_at, DateTime, :nullable => false)
klass.property(:updated_at, DateTime, :nullable => false)
columns_with_types { |n, t| klass.property(n, t, :field => n.to_s) }
klass
end
To pozwala mi wziąć udział w zajęciach SAXMachine (bardzo lekkie) i przekształcić go w klasie DataMapper w locie, i zrobić DataMappery rzeczy z nim . Mógłbyś to zrobić nawet do pojedynczej klasy obiektu.
Lubię wyobrażać sobie, że obniża to mój ślad pamięci podczas importowania obiektów 100K z XML (nie używam DM do masowego importu) i mieszam tylko w bardziej złożonych funkcjach baz danych, kiedy ich potrzebuję
Pomyślałem, że może to być czysto "polifoniczny" powód - zobaczmy, co mówią inni. – cloudhead