2012-08-03 18 views
10

Ich möchte wissen, wie man überprüft, ob das Modell bereits im Projekt existiert oder nicht?Ruby on Rails: Wie überprüft man, ob das Modell existiert

Wenn Benutzer versuchen, ein Modell unter Verwendung desselben Modellnamens programmatisch zu erstellen, müssen Sie prüfen, ob es bereits existiert oder nicht?

Antwort

20

defined? ModelName wird "Konstante" zurückgeben, wenn Modell definiert.

+1

'definiert?' Scheint keine konsistenten Ergebnisse zu liefern. Bitte überprüfen Sie den Code unten: ' Schienen $ c Loading Entwicklungsumgebung (Rails 4.2.0) 2.2.1: 001> definiert (Benutzer) => "Konstante" 2.2.1: 002> definiert? (AuthenticationToken) => nil 2.2.1: 003> AuthenticationToken => AuthenticationToken (call 'AuthenticationToken.connection' eine Verbindung aufzubauen) 2.2.1:? 004> definiert ist (AuthenticationToken) => "constant" 2.2.1: 005> ' –

+0

Zustimmen^es scheint, dass einige Konstanten nur nach referenziert geladen werden? – Pandem1c

1

Da defined? ist problematisch (siehe @Jiggneshh Gohel Kommentar), vielleicht können Sie die Dateinamen in der models dir überprüfen.

files = Dir[Rails.root + 'app/models/*.rb'] 
models = files.map{ |m| File.basename(m, '.rb').camelize } 

models.include? "User" => true 
Verwandte Themen