Разработать миграцию не работает - PullRequest
8 голосов
/ 18 июня 2011

Я создал модель пользователя, используя Devise, и всякий раз, когда я использую rake db:migrate, я получаю следующую проблему:

==  DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

undefined method `database_authenticatable' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x00000103fa1ff0>

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Я запускаю полную трассировку с --trace function, но не могу понять, в чем проблема. Вот файл миграции:

class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
  t.database_authenticatable :null => false
  t.recoverable
  t.rememberable
  t.trackable
  t.confirmable

  # t.encryptable
  # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
  # t.token_authenticatable


  t.timestamps
 end

add_index :users, :email,                :unique => true
add_index :users, :reset_password_token, :unique => true
add_index :users, :confirmation_token,   :unique => true
# add_index :users, :unlock_token,         :unique => true
# add_index :users, :authentication_token, :unique => true
end

def self.down
  drop_table :users
  end
end

Ответы [ 2 ]

22 голосов
/ 18 июня 2012

В Devise 2.0 исключены вспомогательные функции для создания таблиц базы данных:

https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style

Итак, что вам нужно:

create_table(TABLE_NAME) do |t|
  ## Database authenticatable

  t.string :email,              :null => false, :default => ""
  t.string :encrypted_password, :null => false, :default => ""

  ## 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
  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.timestamps

end
2 голосов
/ 18 июня 2011

Рад слышать. Я думаю, что официальный ответ будет повторять шаги:

rails g devise:install

rails g devise user

rake db:migrate

rails s // цикл вашего сервера на всякий случай ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...