Use custom type name with Ruby on Rails STI mechanism.

Posted . Visible to the public.

Let's say you want to modify default type column Rails uses to identify class -> subclass inheritance with the same database table. Just use the following methods:

class User < ActiveRecord::Base
end

class Admin < User
  def find_sti_class(type_name)
    type_name = self.name
    super
  end
    
  def sti_name
    'Administrator'
  end
end

Now you can see that in table users you have type 'Administrator' which transforms to class Admin inside Rails ActiveRecord.

Alexander M
Last edit
Alexander M
Posted by Alexander M to Ruby and RoR knowledge base (2016-05-14 08:11)