ruby-on-railsmongodbdevisedevise-confirmable

Should one use rake db:migrate when you have mongodb


I am creating a new migration like this:

rails g migration add_confirmable_to_devise

And it is generating the file in: db/migrate/YYYYMMDDxxx_add_confirmable_to_devise.rb

and I add this:

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

and then I do rake db:migrate

I get that Process finished with exit code 0

but when I try to test it to sign up I get: undefined local variable or method 'confirmed_at' for #User

I am following these instruction here

Is it because I have mongodb? Is it done differently in mongodb?


Solution

  • No

    Taken from RailsApp GitHub Issue:

    When you use Mongoid and MongoDB, there is no need to run rake db:migrate. An advantage of using MongoDB is there is no need for migrations or schemas.

    From Mongo Doc:

    Mongoid does not utilize ActiveRecord migrations, since MongoDB does not require a schema to be defined prior to storing data.

    When using MongoDB, you only need to configure the fields on the model. Migrations (and Schemas) are used for SQL databases.