mongo_orm nombre personalizado para la colección

mongo_orm determinará automáticamente el nombre de su colección utilizando el nombre del módulo y la clase, y añadiendo una "s".

En los casos en los que quiera nombrar su colección, puede hacerlo simplemente:

class PapiTest < Mongo::ORM::Document
     nombre_colección "Buster"
     prueba de campo : Cadena
fin

get "/" do
     pt = PapiTest.new
     pt.test = "Quiero tu sexo"
     ¡pt.save!
   "¡Hola mundo!"
fin

Kemal.run

En mi ejemplo, la colección se llamará Buster.

Internamente, esto se realiza mediante una macro que tiene el siguiente aspecto:

# especifica el nombre de la colección a utilizar, de lo contrario utilizará el nombre del modelo

macro nombre_colección(nombre)

    {% AJUSTES[:nombre_colección] = nombre.id %}

fin

Es importante entender que el desarrollo se realiza en el contexto de una macro. Por lo tanto, .id NO es una variable de clase/método que tiene que pasar, sino una función especial en el contexto de la macro que devolverá un MacroID para el contenido de la cadena.

Consulte esta documentación: https://crystal-lang.org/api/0.27.2/Crystal/Macros/MacroId.html

belongs_to se realiza de forma similar. Permite crear relaciones entre Documentos / Colecciones.

belongs_to :user, class_name: FictitiousModule::FictiticiousClass

se realiza internamente como una macro:

macro belongs_to(nombre_modelo, nombre_clase=nil)

  campo {{nombre_de_clase ? nombre_de_clase.id.underscore.gsub(/::/,"_") : nombre_de_modelo.id}}_id : BSON::ObjectId

  (...)

aquí nombre_de_la_clase: en la llamada original de la macro se refiere a la segunda variable que es nil por defecto. La macro comprueba si no es nil, y elige qué utilizar.