类:Mongoid::Fields::ForeignKey
Overview
表示BSON文档字段定义,其中存储引用另一个文档ID的外键。 用于关联行为。
实例属性摘要
从Standard继承的属性
#default_val 、 #label 、 #name 、 #options
实例方法摘要折叠
-
# add_atomic_changes (文档, name, key, mods, new_elements, old_elements) ⇒ 对象
为此类可调整大小的字段添加原子更改。
-
# describe (object) ⇒ Object
将对象演进为ID兼容对象。
-
# foreign_key? ⇒ true | false
此字段是外键吗?
-
#惰性? ⇒ true | false
该字段是否执行延迟默认评估?
-
# mongoize (对象) ⇒ 对象
将对象 Mongoize 为mongo友好值。
-
# object_id_field? ⇒ true | false
该字段是否为BSON::ObjectId?
-
#可调整大小? ⇒ true | false
如果是大量,则返回 true,否则返回 false。
从Standard继承的方法
#association 、 #eval_default 、 #initialize 、 #localize_present ? , #localized? , #pre_processed? , #type
构造函数详情
该类从Mongoid::Fields::Standard继承了一个构造函数
实例方法详细信息
# add_atomic_changes (文档, name, key, mods, new_elements, old_elements) ⇒对象
为此类可调整大小的字段添加原子更改。
@todo:重构,意义重大。
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mongoid/fields/foreign_key.rb', line 25 def add_atomic_changes(文档, 名称, key, mods, new_elements, old_elements) 旧 = (old_elements || []) new = (new_elements || []) if new.长度 > 旧.长度 if new.first(旧.长度) == 旧 文档.atomic_array_add_to_sets[key] = new.删除(旧.长度) else mods[key] = 文档.属性[名称] end elsif new.长度 < 旧.长度 pull = 旧 - new if new == 旧 - pull 文档.atomic_array_pulls[key] = pull else mods[key] = 文档.属性[名称] end elsif new != 旧 mods[key] = 文档.属性[名称] end end |
# describe (对象) ⇒对象
将对象演进为ID兼容对象。
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/mongoid/fields/foreign_key.rb', line 64 def 发展(对象) if object_id_field? || 对象.is_a?(文档) if 关联.多态? 关联.convert_to_foreign_key(对象) elsif 对象.is_a?(文档) && 对象.respond_to?(关联.primary_key) Primary_key_field.发展(对象.发送(关联.primary_key)) else 对象.__evolve_object_id__ end else .发展(对象) end end |
# foreign_key? ⇒ true | false
该字段是外键吗?
52 53 54 |
# File 'lib/mongoid/fields/foreign_key.rb', line 52 def foreign_key? true end |
#惰性? ⇒ true | false
该字段是否执行延迟默认评估?
84 85 86 |
# File 'lib/mongoid/fields/foreign_key.rb', line 84 def 懒? 类型.可调整大小? end |
# mongoize (对象) ⇒对象
将对象 Mongoize 为mongo友好值。
96 97 98 99 100 101 102 |
# File 'lib/mongoid/fields/foreign_key.rb', line 96 def mongoize(对象) if 类型.可调整大小? || object_id_field? mongoize_foreign_key(对象) else .mongoize(对象) end end |
# object_id_field? ⇒ true | false
该字段是 BSON::ObjectId 吗?
110 111 112 113 |
# File 'lib/mongoid/fields/foreign_key.rb', line 110 def object_id_field? @object_id_field ||= 关联.多态? ? true : 关联.klass.using_object_id? end |
#可调整大小? ⇒ true | false
如果是大量,则返回 true,否则返回 false。
121 122 123 |
# File 'lib/mongoid/fields/foreign_key.rb', line 121 def 可调整大小? 类型.可调整大小? end |