module PGInheritance::ActiveRecord::Parentable

Public Instance Methods

parent_table(table_name) click to toggle source
# File lib/pg_inheritance/active_record/parentable.rb, line 4
def parent_table(table_name)
  result = execute(select_parents_query(table_name))

  return unless result.any?

  result.first['relname']
end

Private Instance Methods

select_parents_query(table_name) click to toggle source
# File lib/pg_inheritance/active_record/parentable.rb, line 14
      def select_parents_query(table_name)
        <<-SQL
          SELECT pg_namespace.nspname, pg_class.relname
          FROM pg_catalog.pg_inherits
          INNER JOIN pg_catalog.pg_class ON (pg_inherits.inhparent = pg_class.oid)
          INNER JOIN pg_catalog.pg_namespace ON (pg_class.relnamespace = pg_namespace.oid)
          WHERE inhrelid = '#{table_name}'::regclass
          LIMIT 1
        SQL
      end