2017-03-12 1 views
0

Ich habe eine Klasse bekam:Wie mache ich Rubys Objekt.inspect() den echten Klassennamen anstelle von # <Class>?

class Product < SomeParent 
end 

Wenn ich dies tun:

p = Product.new() 
puts p.inspect 

ich die folgende Ausgabe:

#<Class ...> 

Statt:

#<Product ...> 

An y Idee warum?

+0

Was 'Product.ancestors' kehrt? – mudasobwa

+0

Ich habe Schwierigkeiten, Ihr Problem zu duplizieren, aber es sieht so aus, als ob es mit der Klassenvererbung zusammenhängt: https://repl.it/GRrI – OneNeptune

+0

@mudasobwa Es gibt ein Array zurück, das sich selbst, seine Eltern und eine Reihe von Rails enthält bezogene Klassen. Zusätzlich zu einigen unbenannten Modulen. –

Antwort

0

Wahrscheinlich hängt es mit der Klasse zusammen, von der Sie geerbt haben, einfach weil ich Schwierigkeiten habe, Ihr Problem zu duplizieren.

class SomeParent 
end 

class Product < SomeParent 
end 

p = Product.new() 
puts p.inspect 

=>

#<Product: ...> 
+0

Vielleicht ist die bessere Frage: In welchen Fällen überprüft inspect Klasse anstelle eines tatsächlichen Namens? –

+0

https://www.rubysteps.com/articles/2015/customize-your-ruby-classes-with-to-s-and-inspect/ Inspect kann zurückgeben, was auch immer die Klasse definiert hat, um es zurückzugeben. Wir müssen mehr über die geerbte Klasse wissen. – OneNeptune

+0

@SteveFrench das Beispiel hier sehen: https://repl.it/GRrI/2 – OneNeptune

Verwandte Themen