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
einde

get "/" do
     pt = PapiTest.new
     pt.test = "Ik wil jouw sex"
     pt.save!
   "Hallo Wereld!"
einde

Kemal.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.