Я устанавливаю гем разработки для аутентификации в приложении Ruby on Rails и запускаю миграцию базы данных следующим образом:
rake db:migrate
и получил эту ошибку:
undefined method `reference' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0x9322248>
Это немного загадочно. Куда мне обратиться, чтобы отладить это и в чем может быть проблема?
Единственная нестандартная вещь, которую я сделал, это присвоила ей имя таблицы «users», то есть имя моей таблицы в предыдущей команде: rails генерирует devise users
Кроме того, в моем файле rout.rb есть новая запись:
devise_for :users
Вероятно, проблема заключается в несовпадении столбцов в моей базе данных и в том, что пакет auth считает таблицей пользователей. Где я могу посмотреть, что пакет auth считает столбцами? И где я могу найти, где находится команда create-table для таблицы пользователей, которая у меня есть. Первоначально это было сделано с помощью команды scaffold, которая добавила в мою систему кучу лишних и бесполезных вещей.
Мой файл db / migrate / users / create_users выглядит следующим образом:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.timestamps
end
end
def self.down
drop_table :users
end
end
Что является основным, но моя таблица пользователей в БД имеет следующие столбцы:
+------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+-------+
| uid | int(10) unsigned | NO | PRI | 0 | |
| name | varchar(60) | NO | UNI | | |
| pass | varchar(128) | NO | | | |
| mail | varchar(254) | YES | MUL | | |
| theme | varchar(255) | NO | | | |
| signature | varchar(255) | NO | | | |
| signature_format | varchar(255) | YES | | NULL | |
| created | int(11) | NO | MUL | 0 | |
| access | int(11) | NO | MUL | 0 | |
| login | int(11) | NO | | 0 | |
| status | tinyint(4) | NO | | 0 | |
| timezone | varchar(32) | YES | | NULL | |
| language | varchar(12) | NO | | | |
| picture | int(11) | NO | | 0 | |
| init | varchar(254) | YES | | | |
| data | longblob | YES | | NULL | |
+------------------+------------------+------+-----+---------+-------+
И я не уверен, как такое несоответствие может существовать после запуска команды migrate. Откуда он берет инструкции, если не вышеупомянутый файл, который я разместил?
Спасибо!