【问题标题】:Should one use rake db:migrate when you have mongodb当你有 mongodb 时应该使用 rake db:migrate
【发布时间】:2019-04-29 15:18:53
【问题描述】:

我正在创建一个这样的新迁移:

rails g migration add_confirmable_to_devise

它正在生成文件:db/migrate/YYYYMMDDxxx_add_confirmable_to_devise.rb

我添加了这个:

class AddConfirmableToDevise < ActiveRecord::Migration
  # Note: You can't use change, as User.update_all will fail in the down migration
  def up
    add_column :users, :confirmation_token, :string
    add_column :users, :confirmed_at, :datetime
    add_column :users, :confirmation_sent_at, :datetime
    # add_column :users, :unconfirmed_email, :string # Only if using reconfirmable
    add_index :users, :confirmation_token, unique: true
    # User.reset_column_information # Need for some types of updates, but not for update_all.
    # To avoid a short time window between running the migration and updating all existing
    # users as confirmed, do the following
    User.update_all confirmed_at: DateTime.now
    # All existing user accounts should be able to log in after this.
  end

  def down
    remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
    # remove_columns :users, :unconfirmed_email # Only if using reconfirmable
  end
end

然后我做rake db:migrate

我明白了Process finished with exit code 0

但是当我尝试测试它以注册时,我得到:undefined local variable or method 'confirmed_at' for #User

我正在遵循这些指示here

是不是因为我有mongodb?在 mongodb 中做的不同吗?

【问题讨论】:

  • Mongo 不用迁移,只需在模型上配置字段即可。迁移用于 SQL 数据库。
  • @arieljuod 除了User.update_all confirmed_at: DateTime.now 部分,您需要手动修补数据库的该部分,不是吗?
  • @muistooshort,是的,这不是对表格结构的更改,它只是为所有以前的用户设置默认值。仅当您已经有用户并且希望将其标记为已确认时才需要它,但如果您刚刚开始开发并且还没有用户,则无需这样做。

标签: ruby-on-rails mongodb devise devise-confirmable


【解决方案1】:

否

取自RailsApp GitHub Issue:

在使用 Mongoid 和 MongoDB 时,无需运行 rake db:migrate。使用 MongoDB 的一个优点是不需要迁移或模式。

来自Mongo Doc:

Mongoid 不使用 ActiveRecord 迁移,因为 MongoDB 不需要在存储数据之前定义架构。

使用MongoDB时,只需要在模型上配置字段即可。迁移(和架构)用于 SQL 数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2018-10-06
    • 2016-11-19
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多