将使用Active Record的Rails应用程序迁移到MongoDB

时间:2018-07-30 16:00:22

标签: mongodb mongoid rails-activerecord database-migration ruby-on-rails-5.2

我已经编写了一个使用默认Active Record ORM和Devise进行用户身份验证的Rails(5.2)应用程序。它还具有其他一些模型和关联:

  • 用户has_one卡
  • 用户has_many个订阅
  • 订阅has_many发票
  • ....

现在,我必须切换到MongoDB,我在网上找到的所有文章都是关于从头开始使用MongoDB而不是关系数据库的,当然,我不想从头开始重写所有内容。

据我了解,这里是我必须执行的步骤,以便使用例如mongoid gem从Active Record迁移到MongoDB:

  1. 删除所有< ActiveRecord::Base继承
  2. 在模型类中包括Mongoid::Document
  3. db/schema.rb的每一行转换为mould类中的一行,例如:

    t.string "encrypted_password", default: "", null: falsedb/schema.rb

    field :encrypted_password, type: String, default: "", null: falseMyModel类中

  4. 配置Rspec以使用Mongoid config.include Mongoid::Matchers

  5. 配置database_cleaner以使用蒙古型DatabaseCleaner.orm = 'mongoid'

  6. 运行rails generate mongoid:config

  7. require 'devise/orm/active_record'中用require 'devise/orm/mongoid'替换config/initializers/devise.rb

还有一些未解决的问题,例如:

  • 我还必须翻译created_atupdated_at吗? (我的猜测是“是”)
  • 模型验证仍然有效吗?还是我必须适应它们?
  • 我还忘记了其他步骤吗?
  • 是否有任何现成的解决方案?

0 个答案:

没有答案