class DeviseCreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string   :email,              null: false
      t.string   :nickname,           null: false
      t.string   :fullname,           null: false
      t.string   :encrypted_password, null: false
      t.datetime :birthday
      t.references :avatar, foreign_key: true

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip

      t.integer :questions_count, default: 0, null: false
      t.integer :answers_count,   default: 0, null: false

      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :nickname,             unique: true
    add_index :users, :reset_password_token, unique: true
    add_index :users, [:nickname, :encrypted_password]
  end
end
