# Stores <x, y, z> triplet in database.
class Vector < ActiveRecord::Base
composed_of :vector, :mapping => [%w(x x), %w(y y), %w(z z)]
end
# Immutable vector class.
class Vector
attr_reader :x, :y, :z
def initialize(x, y, z)
@x, @y, @z = x, y, z
end
def add(v)
Vector.new(@x + v.x, @y + v.y, @z + v.z)
end
# etc.
end
Как мне соединить и различить два? Я полагаю, что это не очень хорошая идея - иметь только AR-вектор (и поместить все методы и операции там). Я мог бы переименовать первое в DbVector или что-то подобное, но мне интересно, есть ли лучшее решение.