Nó cho phép bạn kế thừa từ một lớp khác không phải là lớp DM.
Nó cũng cho phép thêm các tính năng DM vào một lớp đang bay. Dưới đây là một phương pháp học từ một module Tôi đang làm việc trên ngay bây giờ:
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
này cho phép tôi tham gia một lớp SAXMachine (rất nhẹ) và biến nó thành một lớp Datamapper khi đang bay, và làm DataMappery thứ với nó . Bạn thậm chí có thể đến nó với lớp đơn của một đối tượng. Tôi muốn tưởng tượng rằng điều này làm giảm bộ nhớ của tôi khi tôi đang nhập 100K đối tượng từ XML (tôi không sử dụng DM cho nhập khẩu hàng loạt) và chỉ kết hợp trong các hàm cơ sở dữ liệu phức tạp hơn khi tôi cần chúng
Nguồn
2009-07-24 23:16:09
Tôi nghĩ rằng nó có thể là một lý do hoàn toàn 'philosphical' - Hãy xem những gì người khác nói. – cloudhead