首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 3:将模型迁移到MongoDB

Rails 3:将模型迁移到MongoDB
EN

Stack Overflow用户
提问于 2011-05-25 12:47:45
回答 3查看 2.1K关注 0票数 2

在我现有的Rails 3应用程序中,有几个模型与应用程序生态系统中的其他模型完全无关。底层数据非常大,从关系数据库(MySQL)转移到非关系文档存储(如MongoDB )会有好处。我目前遇到的问题是,该模型是在代码库中的几个地方使用Foo.create、Foo.new等实例化的。我的问题如下:

  • 在Rails 3应用程序中,我将MongoDB和MySQL并排使用的理想方法是什么?
  • 对于要迁移到ActiveRecord.create的模型,我是否应该在MongoDB上使用一个“鬼怪”方法,并将保存它的逻辑写到不同的数据存储区?这听起来很脆弱,但这只是一个想法。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-25 14:25:05

1)只需使用mongoid或mongo_mapper即可。两者都很棒!

(2) NO!用mongoid或mongo_mapper代替ActiveRecord超类。

坚持的唯一困难是记住一个词,多字词。别太复杂了。继承ActiveRecord的模型映射到SQL,而不继承它的模型则不是。就这么简单。与继承MongoDB类的模型一样,只有它们被映射到MongoDB。

我使用postgreSQL和MongoDB (mongo_mapper)一起使用。每个人都可以尝试的一件很棒的事情就是在Mongo文档中存储错误。胜过*.log文件。

最后注意:在多个地方拥有Foo.create和Foo.new是一种代码气味,您可能应该根据DRY和SRL进行重构。只是友好的注解:)

票数 3
EN

Stack Overflow用户

发布于 2011-05-25 14:25:59

在ActiveRecord中有一些类和在Mongoid中有一些类没有固有的问题,只需将数据传输过去。

这是一个相当简单的例子,但是下面仍然可以说是@account.transactions

代码语言:javascript
运行
复制
class Account < ActiveRecord::Base

  def transactions
    Transaction.where(:account_id=>self.id).all
  end

end

class Transaction
  include Mongoid::Document
  field :account_id, :type=>Integer

  def account
    Account.find(account_id)
  end
end
票数 2
EN

Stack Overflow用户

发布于 2011-05-25 12:56:56

看看蒙哥德,一个mongodb的orm。它使用ActiveModel,并且可以像基于ActiveRecord的模型那样进行基本操作。在模型中包含mongoid文档类之后,添加字段并配置它应该相当透明的连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6124697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档