Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ActiveRecord::SubclassNotFound

I'm trying to upgrade my redmine from 1.3.0 to 2.0.0, but I have problems with the database migration. When I run the command:

rake db:migrate RAILS_ENV=production

it shows an error like

rake aborted!
uninitialized constant RAILS_ENV

My error log is:

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'

Here is the list of plugin that I am using in my old redmine:

  1. Google Apps plugin

  2. Redmine Code Review plugin

  3. Redmine Hudson plugin

like image 768
zam Avatar asked Jul 13 '12 11:07

zam


2 Answers

If anyone else stumbles here there are two ways to fix the problem

  1. Don't use a column named type.
  2. Manually set the column name to something pointless:

    self.inheritance_column = :_type_disabled
    

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

like image 151
cbron Avatar answered Oct 25 '22 01:10

cbron


The single-table inheritance error is probably caused by a column named type in your database.

If rails encounters a column name called type it assumes it's a Model that has Subclasses so the type discriminates what model to use. I guess some plugin that was not originally built for rails uses a type column in it's model and that causes Rails to fail.

like image 27
Tigraine Avatar answered Oct 25 '22 02:10

Tigraine