在我现有的Rails 3应用程序中,有几个模型与应用程序生态系统中的其他模型完全无关。底层数据非常大,从关系数据库(MySQL)转移到非关系文档存储(如MongoDB )会有好处。我目前遇到的问题是,该模型是在代码库中的几个地方使用Foo.create、Foo.new等实例化的。我的问题如下:
发布于 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进行重构。只是友好的注解:)
发布于 2011-05-25 14:25:59
在ActiveRecord中有一些类和在Mongoid中有一些类没有固有的问题,只需将数据传输过去。
这是一个相当简单的例子,但是下面仍然可以说是@account.transactions
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
发布于 2011-05-25 12:56:56
看看蒙哥德,一个mongodb的orm。它使用ActiveModel,并且可以像基于ActiveRecord的模型那样进行基本操作。在模型中包含mongoid文档类之后,添加字段并配置它应该相当透明的连接。
https://stackoverflow.com/questions/6124697
复制相似问题