# 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 Vector(并将所有方法和操作放在那里)并不是一个好主意..是否有一些我缺少的模式?我可以将第一个重命名为DbVector或其他东西,但我想知道是否有更好的解决方案。