模块:Mongoid::Factory
Overview
实例化来自数据库的文档。
在命名空间下定义
类: 实例化器
实例方法摘要折叠
-
#build(klass, attributes = nil) ⇒ Document
从提供的属性构建新的
Document。 -
#execute_build (klass, properties = nil, options = {}) ⇒ 文档
private
执行构建。
-
#execute_from_db (klass,Attributes=nil,criteria=nil,selected_fields=nil,execute_callbacks:Threaded.execute_callbacks?) ⇒ 文档
private
执行 from_db。
-
# from_db (klass,Attributes=nil,criteria=nil,selected_fields=nil) ⇒ 文档
根据从数据库加载的属性构建新的
Document。
实例方法详细信息
# build (klass, properties = nil) ⇒文档
从提供的属性构建新的Document 。
如果属性包含 klass 的鉴别器键,则此方法会实例化 klass 或 klass 的后代。
如果属性包含鉴别器键(默认为 _type )并且鉴别器值与 klass 的后代不对应,则此方法将创建 klass 的实例。
154 155 156 |
# File 'lib/mongoid/factory.rb', line 154 def 构建(klass, 属性 = nil) execute_build(klass, 属性) end |
#execute_build (klass, properties = nil, options = {}) ⇒文档
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
注意:
Ruby 2.x 错误导致选项哈希无法作为关键字参数。一旦删除对Ruby 2.x 的支持,我们就可以将选项哈希重新实现为关键字参数。请参阅 https://bugs.Ruby-lang.org/issues/15753
执行构建。
175 176 177 178 179 180 |
# File 'lib/mongoid/factory.rb', line 175 def execute_build(klass, 属性 = nil, = {}) 属性 ||= {} dvalue = 属性[klass.discriminator_key] || 属性[klass.discriminator_key.to_sym] 类型 = klass.get_discriminator_mapping(dvalue) || klass 类型.construct_document(属性, ) end |
#execute_from_db (klass,Attributes=nil,criteria=nil,selected_fields=nil,execute_callbacks:Threaded.execute_callbacks?) ⇒文档
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
执行 from_db。
230 231 232 233 234 235 |
# File 'lib/mongoid/factory.rb', line 230 def execute_from_db(klass, 属性 = nil, 条件 = nil, created_fields = nil, execute_callbacks: 线程化.execute_callbacks?) 实例化器.new(klass, 属性, 条件, created_fields) .实例(execute_callbacks: execute_callbacks) end |
#from_db(klass, attributes = nil, criteria = nil, selected_fields = nil) ⇒ Document
根据从数据库加载的属性构建新的Document 。
如果属性包含鉴别器键(默认为 _type )并且鉴别器值与 klass 的后代不对应,则此方法会引发 UnknownModel 错误。
如果给出了条件对象,则有两种使用方式:
- 如果条件具有通过 #only 指定的字段列表,则仅在返回的文档中填充这些字段。
- 如果条件具有引用关联(即,此 document 被实例化为另一个 document 的关联),则另一个 document 也会填充到返回 document 的反向关联中(如果存在)。
208 209 210 |
# File 'lib/mongoid/factory.rb', line 208 def from_db(klass, 属性 = nil, 条件 = nil, created_fields = nil) execute_from_db(klass, 属性, 条件, created_fields) end |