Holen Sie sich Klassennamen aus einem Modul

Wie kann ich aus einem Modul den Klassennamen der Klasse, die das Modul enthalten ist ?

module ActMethods
  def some_method(*attr_names)
    cls = self.class # this doesn't work 
  end
end

Wie kann ich mich in den cls variable der name der Klasse, die mit diesem Modul ist geladen ?

  • Arbeiten sollte! Möglicherweise müssen Sie selbst.Klasse.name
  • Beachten Sie, dass wenn die Klasse erweitert, in der anonyme, drucken Sie dann aus self.class oder sich selbst.Klasse.name wieder leer, was verwirrend sein kann. Diese diesem Fall, es ist auch gut zu prüfen selbst.Klasse.Superklasse.
  • self.class nicht für mich arbeiten. self.class.name gibt "Modul". Ich denke, es hat mit der Tatsache zu tun, dass die Klasse, in die mein Modul ist enthalten, erbt von ActiveRecord::Base (Rails 3.2.8), aber ich bin mir nicht sicher, warum oder wie das ist, sich einzumischen.
  • Es herausgefunden, und ich war richtig über die es im Zusammenhang mit ActiveRecord. Siehe diesem Artikel auf ActiveSupport::Besorgnis
InformationsquelleAutor astropanic | 2009-11-28
Schreibe einen Kommentar