模块: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 的支持,我们就可以将选项哈希重新实现为关键字参数。 请参阅bugs.Ruby-lang.org/issues/ 15753
执行构建。
175 176 177 178 179 180 181 182 183 184 |
# 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) if 类型 类型.construct_document(属性, ) else klass.construct_document(属性, ) end end |
#execute_from_db (klass,Attributes=nil,criteria=nil,selected_fields=nil,execute_callbacks:Threaded.execute_callbacks?) ⇒文档
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
执行 from_db。
234 235 236 237 238 239 |
# File 'lib/mongoid/factory.rb', line 234 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 指定的字段列表,则仅在返回的文档中填充这些字段。
-
如果条件具有引用关联(即,此文档被实例化为另一个文档的关联),则另一个文档也会填充到返回文档的反向关联中(如果存在)。
212 213 214 |
# File 'lib/mongoid/factory.rb', line 212 def from_db(klass, 属性 = nil, 条件 = nil, created_fields = nil) execute_from_db(klass, 属性, 条件, created_fields) end |