2017-11-22 3 views
0

ein Rails-Modell Gegeben Test erstellt gerade in einer brandneuen Rails-Anwendung:Rails-Modelle und const_get

warum kann ich folgen?

Test::const_get("Test")::const_get("Test") (so lange, wie ich will)

oder der folgenden?

Test::Test::Test (so lange, wie ich will)

+0

Konstanten, die auf der obersten Ebene definiert sind, werden an "Object" angehängt. z.B. 'Object :: Test == Test' also' Test :: Test' funktioniert, weil 'Test' ein' Objekt' und 'Objekt :: Test' eine gültige Konstante ist. Dieser 'Test :: Test :: Test 'sollte Sie eigentlich warnen, dass' warning: toplevel constant Test von Test :: Test referenziert wird, aber das macht es nicht ungültig – engineersmnky

Antwort

0

Test::const_get("Test") gibt die Test-Klasse (selbst), so ist es Schildkröten den ganzen Weg hinunter.

puts Test::const_get("Test").class 
# Class 
puts Test::const_get("Test").is_a? Class 
# true