这实际上取决于 ORM 的类型。一个很好的方法是使用继承。例如,您可以在 database.yml 文件中定义多个数据库和适配器。您可以使用 ActiveRecord 建立连接方法轻松地与这些对话。
# A typical Active record class
class Account < ActiveRecord::Base
...
end
# A new database connection
class NewConnection < ActiveRecord::Base
self.abstract_class = true
establish_connection "users_database"
end
# A new Active record class using the new connection
class User < NewConnection
...
end
这里唯一的缺点是,当您连接到多个活动记录数据库时,迁移可能会有点冒险。
混合ORM
混合 ORMS 很容易。例如 mongodb(使用 mongoid),简单地不要从活动记录继承,并在要使用 mongo 的模型中包含以下内容:
class Vehicle
include Mongoid::Document
field :type
field :name
has_many :drivers
belongs_to :account
end
建立在活动模型之上的 ORM 可以很好地协同工作。例如,使用 mongoid,您应该能够定义与 ActiveRecord 模型的关系,这意味着您不仅可以拥有多个数据库,而且它们可以通过活动模型轻松通信。