Prevent STI when inheriting from an ActiveRecord model

ruby, ruby-on-rails, sti

Solution

You can achieve this by disabling the `inheritance_column` for the model, like so:

class AnotherSection < Section
  # disable STI
  self.inheritance_column = :_type_disabled

end

Problem

On Rails 3.2.6, I have a class that inherits from ActiveRecord::Base: ``` class Section < ActiveRecord::Base ... end ``` When I inherit from this class, Rails will assume I want STI: ``` class AnotherSection < Section ..Rails assumes I have a type field, etc... end ``` I want to be able to inherit from the `Section` class and use the subclass as a normal Ruby subclass, without the Rails STI magic. Is there a way to prevent STI when subclassing from an `ActiveRecord::Base` model?

Original source