加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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).
>一些Neo4j数据库(可能有neo4j-rails gem)而不是PostgreSQL用于某些表.

由于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模型的关系,这意味着您不仅可以拥有多个数据库,而且可以通过活动模型轻松进行通信.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读