2011-04-04 105 views
5

我是Rails编程的新手。我正在考虑每railscast tutorial实施设计和omniauth身份验证。因为我还不知道mongoid,所以我打算从Activerecord开始。最终我想用我认为的Mongoid。将Activerecord数据库迁移到Mongoid

我该如何做一个从Activerecord到Mongoid的迁移?

我只是想与我的项目滚动。特别是当我有很少的用户时,Activerecord可能就足够了。我从来没有这样做过,所以希望有人能告诉我这种方法是否会比它的价值更麻烦。我现在花更多时间去学习mongoid,这对我来说更有意义吗?

我期待着您的回复Rails退伍军人。

回答

5

与使用ActiveRecord一样,您可以使用mongoid来构建模型,控制器和视图,因此它们之间几乎没有差异。最大的区别在于您的数据实际存储和检索的方式,这会影响您的模型,这会直接影响您的代码。

像mongoDB这样的无模式数据库不能像MySQL那样保护你,并且没有简单的方法使用Mongoid进行迁移。

如果你刚开始,你应该使用ActiveRecord,因为很多信息依赖于你使用ActiveRecord和关系数据库。但是,切换到mongo/mongoid是绝对值得的,但除非你使用过关系数据库和ActiveRecord,否则你可能不会理解mongo/mongoid的真棒!

+0

感谢您的意见。我想我现在可能会使用ActiveRecord模型。你认为Mongo的一些优点是什么? – Cyrus 2011-04-17 02:23:28

+0

解耦模型,OO数据存储和缺少迁移。 – BenB 2011-04-17 12:58:05

+1

我会大力争辩说,缺少迁移不是*好处。我们将在下周的工作中从Mongodb切换到Postgres。尝试使用谷歌搜索“mongodb vs postgres”并阅读这些结果。我正在编写一篇关于它的博客文章,但尚未完成 – Houen 2014-01-09 14:50:07

0

我相信ActiveRecord就足够了。请考虑那些方便但不能与Mongoid一起工作的小宝石/插件。教程,截屏视频 - 绝大多数都基于默认的ORM/Mysql。

现在只是不值得花时间在我认为的Mongoid上。

0

...并没有简单的方法来使用Mongoid进行迁移。

这是不正确的。在Mongoid中创建迁移其实很简单。如果您想将列添加到数据库表,简单地把它作为一个“场”添加到模型类的顶部像这样:

class User 
    include Mongoid::Document 

    field :email, type: String 
    field :phone, type: String 
    field :reputation, type: Integer 
end 

否创建迁移,不耙数据库。只需根据需要添加/删除字段,重新启动服务器,然后您就可以开始了。但是,您应该谨慎地删除字段,因为他们可能会在您引用它们的地方破坏您的代码。