mongo_orm nome personalizado para coleta
mongo_orm determinará automaticamente o nome da sua coleção usando o nome do Módulo e da Classe, e anexando um "s".
Nos casos em que você quer nomear a sua coleção, você pode simplesmente fazer isso:
classe PapiTest < Mongo::ORM::Document
collection_name "Buster
teste de campo : Corda
finalobter "/" fazer
pt = PapiTest.new
pt.test = "Eu quero o teu sexo".
pt.save!
"Olá Mundo!"
finalKemal.run
No meu exemplo, a coleção será chamada Buster.
Internamente, isto é realizado por uma macro que se parece com isto:
# especifica o nome da colecção a utilizar, caso contrário, utilizará o nome do modelo
macro collection_name(nome)
{% SETTINGS[:collection_name] = nome.id %}
final
É importante entender, que o desenvolvimento é feito no contexto de uma macro aqui! Portanto, .id NÃO é uma variável de classe/método que você tem que passar, mas sim uma função especial no contexto da macro que retornará um MacroID para o conteúdo da string.
Consulte esta documentação: https://crystal-lang.org/api/0.27.2/Crystal/Macros/MacroId.html
belongs_to é realizado de uma forma semelhante. Ele permite criar relações entre Documentos / Colecções.
belongs_to :user, class_name::FictitiousModule::FictiticiousClass
é realizada internamente como uma macro:
macro belongs_to(model_name, class_name=nil)
campo {{{{nome_da_classe ? class_name.id.underscore.gsub(/::/,"_") : model_name.id}}_id : BSON::ObjectId
(…)
aqui class_name: na chamada macro original refere-se à segunda variável que é nula por padrão. A macro verifica se ela não é nula, e escolhe o que usar.