2012-07-13 9 views
17

Estoy intentando actualizar mi redmine de 1.3.0 a 2.0.0, pero tengo problemas con la migración de la base de datos. Cuando ejecuto el comando:ActiveRecord :: SubclassNotFound

rake db:migrate RAILS_ENV=production 

se muestra un error como

rake aborted! 
uninitialized constant RAILS_ENV 

Mi registro de errores es:

ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: 'GoogleAppsAuthSource'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite AuthSource.inheritance_column to use another column for that information.): 
app/models/user.rb:139:in `try_to_login' 
app/controllers/account_controller.rb:143:in `password_authentication' 
app/controllers/account_controller.rb:138:in `authenticate_user' 
app/controllers/account_controller.rb:30:in `login' 

Aquí está la lista de plugin que estoy usando en mi vieja redmine:

  1. Google Apps plugin

  2. plugin de Código Redmine Revisión complemento

  3. Redmine Hudson

Por favor, me ayudan a

Respuesta

14

El error de la herencia de una sola mesa es probablemente causado por una columna denominada type en su base de datos.

Si los rieles encuentran un nombre de columna llamado type, asume que es un Modelo que tiene Subclases, por lo que el tipo discrimina qué modelo usar. Supongo que algún complemento que originalmente no se creó para los rieles usa una columna type en su modelo y eso hace que Rails falle.

62

si alguien tropieza demás aquí hay dos maneras de solucionar el problema

  1. No utilice una columna denominada tipo.
  2. establecer manualmente el nombre de la columna a algo sin sentido:

    self.inheritance_column = :_type_disabled 
    

    Ver: http://apidock.com/rails/ActiveRecord/Base/inheritance_column/class

+2

'self.inheritance_column = las negativas también hace el truco. – Amir

+1

Es más fácil simplemente cambiarle el nombre 'table_type' en lugar de hacer hacks con' inheritance_column' Probé esto con nil y un símbolo y la aplicación se rompió en el modelo heredado en diferentes áreas. –

+3

'No use una columna llamada tipo. Muchas gracias ...... –