In Ruby, verstehe ich, dass ::ClassName
für den Aufruf der Klasse am Basismodul. Zum Beispiel, hier ist mein Code:Rails: wann müssen wir setzen :: bevor einige Klassen für Schienen Basisklasse verstehen
module HHT
module V1
module OfflineCheckIn
class PutOfflineCheckInProductsApi < ApplicationApi
put 'offline' do
ActiveRecord::Base.transaction do
OfflineCheckIn.create(check_in_param) # exception here
end
end
end
end
end
end
Wenn ich laufe, treffe ich Ausnahme:
NoMethodError (nicht definierte Methode `erstellen‘ für HHT :: V1 :: OfflineCheckIn: Module)
Wie ich verstehe, verstehen Schienen, dass OfflineCheckIn
derzeit in Modul HHT::V1::OfflineCheckIn
, so muss ich bei der Basisklasse ::OfflineCheckIn
anrufen. Die Sache, die ich nicht verstehe, ist: bei einem anderen Controller, einige vorherige Programmierer implementiert den gleichen Weg mit mir, aber er muss ::
vor Modell nicht anrufen.
Also meine Frage ist: wann brauchen wir nicht ::
vor der Klasse und Schienen können verstehen, dass das ist Basisklasse?
Dank
gibt es andere Fälle? Mein Projekt hat nur eine Datei mit der Klasse 'OfflineCheckIn'. Aber es gibt ein Modul namens 'OfflineCheckIn' im' offline_check_in' -Verzeichnis. Wird dies Auswirkungen auf Schienen haben, wie Klasse verstehen? –
@ TrầnKimDự eigentlich ist es egal, ist das Ding eine Klasse oder ein Modul, in der Tat, beide sind als Wert für eine Konstante gespeichert – Vasfed