Search code examples
ruby-on-railsrubypostgresqlpg

rails pg db migration undefined method `database_authenticatable' for Devise Users


undefined method database_authenticatable' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0xd715388>

The migration is:

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable
      t.timestamps
    end
    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
  end
  def self.down
    drop_table :users
  end
end

Solution

  • If I'm not mistaken, devise changed it's generated migration style from

    create_table(:user) do |t|
      t.database_authenticatable
    end
    

    to

    create_table(:user) do |t|
      ## Database authenticatable
      t.string :email,              :null => false, :default => ""
      t.string :encrypted_password, :null => false, :default => ""
    end
    

    after version 2.0.

    UPDATE: See this wiki.