2012-08-03 9 views
10

Desidero sapere come verificare se il modello esiste già nel progetto oppure no?Ruby on Rails: come verificare se il modello esiste

Quando l'utente tenta di creare un modello in modo programmatico utilizzando lo stesso nome modello, è necessario verificare se esiste già o no?

risposta

20

defined? ModelName restituirà "costante" se il modello è definito.

+1

'definito?' Non sembra restituire risultati coerenti. Si prega di verificare il codice qui sotto: ' $ rotaie c ambiente di sviluppo Loading (Rails 4.2.0) 2.2.1: 001> definito (Utente) => "costante" 2.2.1:? 002> definito? (AuthenticationToken) => nil 2.2.1: 003> AuthenticationToken => AuthenticationToken (chiamata 'AuthenticationToken.connection' di stabilire una connessione) 2.2.1:? 004> definito (AuthenticationToken) => "costante" 2.2.1: 005> ' –

+0

Accetto^sembra che alcune costanti vengano caricate solo dopo aver fatto riferimento? – Pandem1c

1

Poiché defined? è problematico (vedere il commento di @Jiggneshh Gohel), è possibile controllare i nomi dei file nella directory models.

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

models.include? "User" => true 
Problemi correlati