Module: ActiveRecord::MTI::Inheritance::ClassMethods

Defined in:
lib/active_record/mti/inheritance.rb

Instance Method Summary collapse

Instance Method Details

#has_tableoid_column?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/active_record/mti/inheritance.rb', line 15

def has_tableoid_column?
  tableoid_column != false
end

#inherited(subclass) ⇒ Object



19
20
21
22
# File 'lib/active_record/mti/inheritance.rb', line 19

def inherited(subclass)
  super
  subclass.using_multi_table_inheritance?
end

#uses_mti(*args) ⇒ Object



24
25
26
# File 'lib/active_record/mti/inheritance.rb', line 24

def uses_mti(*args)
  warn "DEPRECATED - `uses_mti` is no longer needed (nor has any effect)"
end

#using_multi_table_inheritance?Boolean

Returns:

  • (Boolean)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/active_record/mti/inheritance.rb', line 28

def using_multi_table_inheritance?
  mti = ActiveRecord::MTI::Registry.tableoid?(self)
  return (mti != false) unless mti == nil

  if (mti = check_inheritance_of(@table_name))
    if (self != base_class && self.table_name == base_class.table_name)
      mti = false
    else
      mti = detect_tableoid(table_name)
    end
  end

  ActiveRecord::MTI::Registry[self] = mti

  descendants.each do |d|
    d.using_multi_table_inheritance?
  end

  return mti && mti != false
end