Warunkowe wywołanie metody

Witam,
mam takie coś:
require_relative ‘database’

module JDB
class Model
include Database
class << self

  protected
  def table_name(table_name)
    #remove_method :table if self.class.respond_to? :table
    define_singleton_method :table do
      table_name.to_sym
    end
    self.metadata #if @@connection.respond_to? :get_meta_data
  end
  def metadata
    rsh = @@connection.get_meta_data.get_columns(nil, nil, self.table.to_s, nil)
    col = []
    while rsh.next
      col << rsh.get_object('COLUMN_NAME')
    end
    raise Exception, "Empty metadata for table #{self.table}" unless col.size > 0
    define_singleton_method :columns do
      col
    end
  end
  def inherited(child_class)
    child_class.table_name child_class.to_s.split('::')[-1].to_s.downcase.to_sym 
  end
end
def initialize(obj = {})
  if obj.size == 0
    raise ArgumentError, "Unrecognized parameter: #{self.columns - obj.keys}" unless self.columns.include? obj.keys
  end
end

end
end

require_relative ‘…/…/lib/model’

class CableModem < JDB::Model
table_name :v_cm

end

Chciałbym, żeby

child_class.table_name child_class.to_s.split(’::’)[-1].to_s.downcase.to_sym

z metody inherited było wykonywane tylko w przypadku jeśli w klasie potomnej nie została wywołana metoda table_name.
Czy da się takie coś zrobić?
W tej chwili działa to tak, że wykonywana jest z inherited, a później nadpisywana przez wywołanie w klasie potomnej.