2011-04-04 103 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 

否創建遷移,不耙數據庫。只需根據需要添加/刪除字段,重新啓動服務器,然後您就可以開始了。但是,您應該謹慎地刪除字段,因爲他們可能會在您引用它們的地方破壞您的代碼。