mongo_orm集合的自定义名称
mongo_orm将通过使用模块和类的名称,并附加一个 "s "来自动确定你的集合的名称。
在你想命名你的收藏的情况下,你可以简单地这样做。
class PapiTest < Mongo::ORM::Document
collection_name "Buster"
现场测试:字符串
结束得到"/"做
pt = PapiTest.new
pt.test = "我想要你的性"
pt.save!
"你好,世界!"
结束Kemal.run
在我的例子中,这个集合将被称为 拔河.
在内部,这是由一个宏来实现的,它看起来像这样。
#指定要使用的集合名称,否则它将使用模型的名称。
macro collection_name(name)
{% SETTINGS[:collection_name] = name.id %}。
结束
重要的是要明白,这里的开发是在宏的上下文中进行的!因此,.id不是你必须传入的类变量/方法,而是宏上下文中的一个特殊函数,它将为字符串内容返回一个宏ID。因此,.id不是一个你必须传入的类变量/方法,而是宏上下文中的一个特殊函数,它将为字符串的内容返回一个MacroID。
请参考本文件。 https://crystal-lang.org/api/0.27.2/Crystal/Macros/MacroId.html
belongs_to是以类似的方式实现的。它允许你创建文档/集合之间的关系。
belongs_to :user, class_name: FictitiousModule::FictiticiousClass
在内部实现为一个宏。
macro belongs_to(model_name, class_name=nil)。
field {{class_name ? class_name.id.underscore.gsub(/::/, "_") : model_name.id}}_id : BSON::ObjectId
(...)
这里class_name:在原始的宏调用中指的是第二个变量,默认为nil。该宏检查它是否为nil,并选择使用什么。