模块:Mongoid::Scopeable::ClassMethods
- 定义于:
- lib/mongoid/scopable.rb
实例方法摘要折叠
-
# default_scopeable? ⇒ true | false
该类是否能够应用默认作用域?
-
#default_scope(value = nil) ⇒ Proc
为模型添加默认作用域。
-
#queryable ⇒ Criteria
private
获取一个 Queryable,它可以是作用域堆栈上的最后一个,也可以是新的。
-
#范围(名称, 值, 区块(&B)) ⇒ 对象
创建可从类级别访问或通过提供的名称链接到条件的范围。
-
#scoped (options = nil) ⇒ Criteria
获取具有正常作用域的文档条件。
-
#作用域⇒ 哈希
返回为此类定义的所有作用域的哈希值,包括在祖先类上定义的作用域。
-
# unscoped ⇒ Criteria |对象
在不应用任何范围的情况下获取条件。
-
# with_default_scope ⇒ Criteria (条件:#criteria)
获取应用了默认范围的条件(如果可能)。
-
# with_scope (criteria) ⇒ Criteria
将提供的条件推入作用域堆栈,并在生成提供的区块后将其删除。
-
# without_default_scope ⇒ 对象
在不应用默认作用域的情况下执行区块。
实例方法详细信息
# default_scopeable? ⇒ true | false
该类是否能够应用默认作用域?
95 96 97 |
# File 'lib/mongoid/scopable.rb', 第95行 def default_scopeable? default_scoping? && !线程化.without_default_scope?(self) end |
#default_scope(value = nil) ⇒ Proc
为模型添加默认作用域。 除非指定了 #unscoped,否则此范围将应用于所有条件。
83 84 85 86 87 |
# File 'lib/mongoid/scopable.rb', 第83行 def default_scope(值 = nil) 值 = Proc.new { 产量 } if block_given? check_scope_validity(值) self.default_scoping = process_default_scope(值) end |
#queryable ⇒ Criteria
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
获取一个 Queryable,它可以是作用域堆栈上的最后一个,也可以是新的。
107 108 109 110 111 |
# File 'lib/mongoid/scopable.rb', 第107行 def 可查询 Crit = 线程化.current_scope(self) || 条件.new(self) Crit. = true if (Crit.klass. && !Crit.klass.循环?) Crit end |
#范围(名称, 值, 区块(&B)) ⇒对象
创建可从类级别访问或通过提供的名称链接到条件的范围。
132 133 134 135 136 137 138 139 140 141 |
# File 'lib/mongoid/scopable.rb', 第132行 def 范围(名称, 值, 和块) 标准化 = 名称.to_sym check_scope_validity(值) check_scope_name(标准化) _declared_scopes[标准化] = { 范围: 值, 扩展名: 模块.new(和块) } define_scope_method(标准化) end |
#scoped (options = nil) ⇒ Criteria
注意:
这将强制应用默认范围。
获取具有正常作用域的文档条件。
158 159 160 |
# File 'lib/mongoid/scopable.rb', 第158行 def 作用域( = nil) 可查询.作用域() end |
#作用域⇒哈希
返回为此类定义的所有作用域的哈希值,包括在祖先类上定义的作用域。
51 52 53 54 55 56 57 58 59 |
# File 'lib/mongoid/scopable.rb', 第51行 def scopes defined_scopes = {} 祖先.reverse.每 do |klass| if klass.respond_to?(:_declared_scopes) defined_scopes.合并!(klass._declared_scopes) end end defined_scopes.冻结 end |
# unscoped ⇒ Criteria |对象
注意:
这将强制删除默认范围以及使用“.with_scope”应用的任何范围。
在不应用任何范围的情况下获取条件。
177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/mongoid/scopable.rb', 第177行 def 未限定作用域 if block_given? without_default_scope do with_scope(nil) do 产量(self) end end else 可查询.未限定作用域 end end |
# with_default_scope ⇒ Criteria也称为: criteria
获取应用了默认范围的条件(如果可能)。
195 196 197 |
# File 'lib/mongoid/scopable.rb', 第195行 def with_default_scope 可查询.with_default_scope end |
# with_scope (criteria) ⇒ Criteria
将提供的条件推入作用域堆栈,并在生成提供的区块后将其删除。
209 210 211 212 213 214 215 216 217 |
# File 'lib/mongoid/scopable.rb', 第209行 def with_scope(条件) 上一个 = 线程化.current_scope(self) 线程化.set_current_scope(条件, self) 开始 产量 条件 确保 线程化.set_current_scope(上一个, self) end end |
# without_default_scope ⇒对象
在不应用默认作用域的情况下执行区块。
227 228 229 230 231 232 |
# File 'lib/mongoid/scopable.rb', 第227行 def without_default_scope 线程化.begin_ without_default_scope(self) 产量 确保 线程化.exit_Without_default_scope(self) end |