mongo_orm aangepaste naam voor collectie
mongo_orm zal automatisch de naam voor uw verzameling bepalen door de module- en klassenaam te gebruiken en er een "s" aan toe te voegen.
In gevallen waarin u uw verzameling een naam wilt geven, kunt u dit gewoon doen:
klasse PapiTest < Mongo::ORM::Document
collection_name "Buster"
veldtest : String
eindeget "/" do
pt = PapiTest.new
pt.test = "Ik wil jouw sex"
pt.save!
"Hallo Wereld!"
eindeKemal.run
In mijn voorbeeld, zal de collectie worden genoemd Buster.
Intern wordt dit gerealiseerd door een macro die er als volgt uitziet:
# specificeer de collectienaam om te gebruiken anders zal het de naam van het model gebruiken
macroverzameling_naam(naam)
{% INSTELLINGEN[:collection_name] = name.id %}
einde
Het is belangrijk te begrijpen dat de ontwikkeling hier gebeurt in de context van een macro! Daarom is .id NIET een klasse variabele/methode die je moet doorgeven, maar een speciale functie in de macro context die een MacroID zal teruggeven voor de inhoud van de string.
Raadpleeg deze documentatie: https://crystal-lang.org/api/0.27.2/Crystal/Macros/MacroId.html
belongs_to wordt op een soortgelijke manier gerealiseerd. Hiermee kunnen relaties tussen Documenten / Collecties worden gelegd.
belongs_to :user, class_name: FictitiousModule::FictiticiousClass
wordt intern als een macro gerealiseerd:
macro belongs_to(model_name, class_name=nil)
veld {{klasse_naam ? klasse_naam.id.underscore.gsub(/::/,"_") : model_naam.id}}_id : BSON::ObjectId
(...)
hier verwijst class_name: in de oorspronkelijke macro-aanroep naar de tweede variabele, die standaard nihil is. De macro controleert of deze niet nihil is, en kiest wat te gebruiken.