ruby-on-rails-3 – 多个Rails ORM
发布时间:2020-12-17 03:22:00 所属栏目:百科 来源:网络整理
导读:我们有一个Rails 3应用程序,它有一个由activerecord映射的PostgreSQL数据库(有~10个表).一切都很好. 但是,我们也可以使用: 一个MongoDB数据库,以存储图像(可能与mongoid gem). 一些Neo4j数据库(可能有neo4j-rails gem)而不是PostgreSQL用于某些表. 由于data
我们有一个Rails 3应用程序,它有一个由activerecord映射的PostgreSQL数据库(有~10个表).一切都很好.
但是,我们也可以使用: >一个MongoDB数据库,以存储图像(可能与mongoid gem). 由于database.yml,使用带有一个Rails ORM的数据库很简单.但是当有多个ORM时,我们如何处理?有这么好的方法吗?例如,ActiveHash(和ActiveYaml)可以很好地与ActiveRecord配合使用.我认为有可能让不同的ORM协同工作.谢谢你的任何提示. 解决方法
这实际上取决于ORM的类型.一个很好的方法是使用继承.例如,您可以在database.yml文件中定义多个数据库和适配器.您可以使用ActiveRecord的establish_connection方法轻松地与这些对话.
# 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模型的关系,这意味着您不仅可以拥有多个数据库,而且可以通过活动模型轻松进行通信. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |