mongo_orm nome personalizzato per la collezione
mongo_orm determinerà automaticamente il nome della vostra collezione usando il nome del modulo e della classe e aggiungendo una "s".
Nei casi in cui volete dare un nome alla vostra collezione, potete semplicemente fare così:
classe PapiTest < Mongo::ORM::Document
nome_della_raccolta "Buster"
test di campo : Stringa
fineottenere "/" fare
pt = PapiTest.new
pt.test = "Voglio il tuo sesso"
pt.save!
"Ciao mondo!"
fineKemal.run
Nel mio esempio, la collezione sarà chiamata Buster.
Internamente, questo è realizzato da una macro che assomiglia a questa:
# specifica il nome della collezione da usare altrimenti userà il nome del modello
macro collezione_nome(nome)
{% SETTINGS[:collection_name] = name.id %}
fine
È importante capire che qui lo sviluppo è fatto nel contesto di una macro! Quindi .id NON è una variabile di classe/metodo che devi passare, ma una funzione speciale nel contesto della macro che restituirà un MacroID per il contenuto della stringa.
Fare riferimento a questa documentazione: https://crystal-lang.org/api/0.27.2/Crystal/Macros/MacroId.html
belongs_to è realizzato in modo simile. Permette di creare relazioni tra documenti/collezioni.
belongs_to :user, class_name: FictitiousModule::FictiticiousClass
è realizzato internamente come una macro:
macro belongs_to(nome_modello, nome_classe=nil)
campo {{nome_classe ? nome_classe.id.underscore.gsub(/::/,"_") : nome_modello.id}}_id : BSON::ObjectId
(...)
Qui class_name: nella chiamata originale della macro si riferisce alla seconda variabile che è nil per default. La macro controlla se non è nil e sceglie cosa usare.