mongo_orm nom personnalisé pour la collection
mongo_orm déterminera automatiquement le nom de votre collection en utilisant le nom du module et de la classe, et en ajoutant un "s".
Dans les cas où vous souhaitez nommer votre collection, vous pouvez simplement le faire :
classe PapiTest < Mongo::ORM::Document
collection_name "Buster"
test sur le terrain : String
finget "/" do
pt = PapiTest.new
pt.test = "Je veux ton sexe"
pt.save !
"Bonjour le monde !"
finKemal.run
Dans mon exemple, la collection s'appellera Buster.
En interne, ceci est réalisé par une macro qui ressemble à ceci :
# spécifier le nom de la collection à utiliser, sinon le nom du modèle sera utilisé.
macro collection_name(name)
{% SETTINGS[:collection_name] = name.id %}
fin
Il est important de comprendre que le développement se fait ici dans le contexte d'une macro ! Par conséquent, .id n'est PAS une variable de classe ou une méthode que vous devez passer, mais une fonction spéciale dans le contexte de la macro qui renverra un MacroID pour le contenu de la chaîne.
Reportez-vous à cette documentation : https://crystal-lang.org/api/0.27.2/Crystal/Macros/MacroId.html
La fonction belongs_to est réalisée de manière similaire. Il vous permet de créer des relations entre les documents / collections.
belongs_to :user, class_name : FictitiousModule::FictiticiousClass
est réalisé en interne comme une macro :
macro belongs_to(nom_modèle, nom_classe=nil)
champ {{class_name ? class_name.id.underscore.gsub(/::/,"_") : model_name.id}}_id : BSON::ObjectId
(...)
ici class_name : dans l'appel de la macro originale fait référence à la deuxième variable qui est nulle par défaut. La macro vérifie si elle n'est pas nil, et choisit ce qu'il faut utiliser.