模块:Mongoid::Criteria::Scopable
- 包含在:
- Mongoid::Criteria
- 定义于:
- lib/mongoid/criteria/scopable.rb
Overview
Mongoid::Criteria 中包含的 Mixin 模块添加了与默认查询作用域和命名作用域相关的功能。
实例方法摘要折叠
-
# apply_default_scope ⇒ 条件
将默认范围应用于条件。
-
# apply_scope (scope) ⇒ Criteria
private
将范围应用于当前条件。
-
# remove_scoping (other) ⇒ Criteria
给定另一个条件,从此条件中删除其他条件的作用域。
-
#scoped (options = nil) ⇒ Criteria
强制对条件限定作用域,除非其位于未限定作用域的块内。
-
#限定作用域? ⇒ true | false
条件是否应用了默认范围?
-
# scoping_options ⇒ 数组
获取成对出现的条件范围选项(已限定范围、未限定范围)。
-
# scoping_options= (options) ⇒ 数组
将条件范围选项设置为对(有范围、无范围)。
-
# unscoped ⇒ 条件
清除条件中的所有范围。
-
# unscoped? ⇒ true | false
条件是否未限定范围?
-
# with_default_scope ⇒ 条件
如果可以应用默认范围,则获取应用了默认范围的条件。
实例方法详细信息
# apply_default_scope ⇒条件
将默认范围应用于条件。
18 19 20 21 22 23 |
# File 'lib/mongoid/criteria/scopable.rb', line 18 def apply_default_scope klass.without_default_scope do 合并!(klass.default_scoping.调用) end self. = true, false end |
# apply_scope (scope) ⇒ Criteria
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
将范围应用于当前条件。
此方法不会修改接收器,但可能会返回新的对象或接收器,具体取决于参数:如果scope
参数为零,则不加修改地返回接收器,否则返回新的条件对象。
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/mongoid/criteria/scopable.rb', line 37 def apply_scope(范围) 案例 范围 when Proc instance_exec(和范围) when 符号 发送(范围) when 条件 合并(merge)(范围) else self end end |
# remove_scoping (other) ⇒ Criteria
给定另一个条件,从此条件中删除其他条件的作用域。
59 60 61 62 63 64 65 66 67 |
# File 'lib/mongoid/criteria/scopable.rb', line 59 def remove_scoping(其他) if 其他 reject_matching(其他, :selector, :options) 其他.包含.每 do || 包含.delete_one() end end self end |
#scoped (options = nil) ⇒ Criteria
强制对条件限定作用域,除非其位于未限定作用域的块内。
77 78 79 80 81 82 83 84 |
# File 'lib/mongoid/criteria/scopable.rb', line 77 def 作用域( = nil) Crit = 克隆 Crit..合并!( || {}) if klass.default_scopeable? && !范围? Crit.apply_default_scope end Crit end |
#限定作用域? ⇒ true | false
条件是否应用了默认范围?
92 93 94 |
# File 'lib/mongoid/criteria/scopable.rb', line 92 def 范围? !!(定义?(@scoped) ? @scoped : nil) end |
# scoping_options ⇒数组
获取成对出现的条件范围选项(已限定范围、未限定范围)。
127 128 129 |
# File 'lib/mongoid/criteria/scopable.rb', line 127 def [ (定义?(@scoped) ? @scoped : nil), (定义?(@unscoped) ? @unscoped : nil) ] end |
# scoping_options= (options) ⇒数组
将条件范围选项设置为对(有范围、无范围)。
139 140 141 |
# File 'lib/mongoid/criteria/scopable.rb', line 139 def () @scoped, @unscoped = end |
# unscoped ⇒条件
清除条件中的所有范围。
102 103 104 105 106 107 108 109 |
# File 'lib/mongoid/criteria/scopable.rb', line 102 def 未限定作用域 Crit = 克隆 除非 unscoped? Crit. = false, true Crit.选择器.清除; Crit..清除 end Crit end |
# unscoped? ⇒ true | false
条件是否未限定范围?
117 118 119 |
# File 'lib/mongoid/criteria/scopable.rb', line 117 def unscoped? !!(定义?(@unscoped) ? @unscoped : nil) end |
# with_default_scope ⇒条件
如果可以应用默认范围,则获取应用了默认范围的条件。 不能的情况是:如果位于未确定作用域的区块中,如果已强制已将条件取消作用域,或者已应用默认作用域。
152 153 154 155 156 157 158 |
# File 'lib/mongoid/criteria/scopable.rb', line 152 def with_default_scope Crit = 克隆 if klass.default_scopeable? && !unscoped? && !范围? Crit.apply_default_scope end Crit end |