在rails4中创建mongodb模型

时间:2014-01-04 13:54:13

标签: ruby-on-rails model mongoid migrate

我是rails开发的新手。在rails4中使用mongoid时,我不知道如何使我构建的模型映射为我本地mongodb中的表。

这是user.rb:

class User

  include Mongoid::Document
  include Mongoid::Timestamps

  field :username, type: String
  field :email, type: String
  field :role, type: String
  field :password, type: String

  validates_presence_of :username, :password
  validates_uniqueness_of :username
  validates_inclusion_of :role, in: %w(guest admin)

  class << self
    def authenticate(username, password)
      user = find_by(username: username, password: password)
      if user
        user
      end
    end
  end
end

根据导轨启动指南。我们可以使用rails generate model User,然后使用rake db:migrate在表格中创建模型。但是当我使用mongodb作为数据库时,我很困惑。

现在数据库已成功配置,这意味着我的本地环境具有我配置的数据库。但是用户表不存在,我只想知道如何使模型映射到数据库中的表。我是否必须使用某个命令创建它,或者只需要在某个地方加载模型。非常感谢你们回答这个问题。

2 个答案:

答案 0 :(得分:1)

对于MongoDB,您不需要迁移,因为它的架构较少。只需存储一条记录,它就会出现在您的数据库中。

由于它的架构较少,您可以更改Rails模型,而无需迁移数据库,MongoDB也不会打扰。但请确保您的应用程序可以处理存储内容的两个版本。

但是如果你愿意的话,当你在Rails模型中改变某些东西时,你可以编写将旧数据转换为新模式的迁移(但是我会在我有一些生产数据之前开始编写迁移,用于开发删除数据库并重新创建它是可以的。但正如我所说,这只会困扰你的Rails应用程序。 MongoDB允许您在没有迁移的情况下完成所有操作。

答案 1 :(得分:1)

照顾好以下事项。

  1. 使用mongoDB生成rails应用程序时跳过活动记录。

    • rails new app_name --skip-active-record
  2. 打开config / application.rb并靠近顶部,删除行需要“rails / all”并添加以下行,以便最终得到此

    • 要求“action_controller / railtie”
    • 要求“action_mailer / railtie”
    • 要求“active_resource / railtie”
    • 要求“rails / test_unit / railtie”
  3. Rails 3.2+您还需要删除驻留在您的环境中的Active Record的配置选项,config / environments / development.rb

    • #config.active_record.mass_assignment_sanitizer =:strict
    • #config.active_record.auto_explain_threshold_in_seconds = 0.5
  4. Rails 3.2.3+你还需要在config / application.rb中注释掉以下行

    • #config.active_record.whitelist_attributes = true
  5. 使用mongoDB设计rails应用程序就像Fun !!