模块:Mongoid::Criteria::Scopable

包含在:
Mongoid::Criteria
定义于:
lib/mongoid/criteria/scopable.rb

Overview

Mongoid::Criteria 中包含的 Mixin 模块添加了与默认查询作用域和命名作用域相关的功能。

实例方法摘要折叠

实例方法详细信息

# apply_default_scope条件

将默认范围应用于条件。

例子:

应用默认范围。

criteria.apply_default_scope

返回:



15
16
17
18
19
20
# File 'lib/mongoid/criteria/scopable.rb', line 15

def apply_default_scope
  klass.without_default_scope do
    合并!(klass.default_scoping.调用)
  end
  self.scoped_options = true, false
end

# apply_scope (scope) ⇒ Criteria

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

将范围应用于当前条件。

此方法不会修改接收器,但可能会返回新的对象或接收器,具体取决于参数:如果scope参数为零,则不加修改地返回接收器,否则返回新的条件对象。

参数:

  • 范围 (Proc | Symbol | Criteria | nil)

    要应用的范围。

返回:

  • ( Criteria )

    已应用范围的条件。



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/mongoid/criteria/scopable.rb', line 34

def apply_scope(范围)
  案例 范围
  when Proc
    instance_exec(范围)
  when 符号
    发送(范围)
  when 条件
    合并(merge)(范围)
  else
    self
  end
end

# remove_scoping (other) ⇒ Criteria

给定另一个条件,从此条件中删除其他条件的作用域。

例子:

删除范围。

criteria.remove_scoping(other)

参数:

  • 其他 ( Criteria )

    其他标准。

返回:

  • ( Criteria )

    已删除范围界定的条件。



56
57
58
59
60
61
62
63
64
# File 'lib/mongoid/criteria/scopable.rb', line 56

def remove_scoping(其他)
  if 其他
    reject_matching(其他, :selector, :options)
    其他.包含. do |meta|
      包含.delete_one(meta)
    end
  end
  self
end

#scoped (options = nil) ⇒ Criteria

强制对条件限定作用域,除非它位于未限定区块内。

例子:

强制限定条件范围。

criteria.scoped(skip: 10)

参数:

  • 选项 哈希 (默认为: nil

    其他查询选项。

返回:

  • ( Criteria )

    限定范围的条件。



74
75
76
77
78
79
# File 'lib/mongoid/criteria/scopable.rb', line 74

def 作用域(选项 = nil)
  Crit = 克隆
  Crit.选项.合并!(选项 || {})
  Crit.apply_default_scope if klass.default_scopeable? && !范围?
  Crit
end

#限定作用域?true | false

条件是否应用了默认范围?

例子:

是否应用了默认范围?

criteria.scoped?

返回:

  • ( true | false )

    如果应用了默认范围。



87
88
89
# File 'lib/mongoid/criteria/scopable.rb', line 87

def 范围?
  !!(定义?(@scoped) ? @scoped : nil)
end

# scoping_options数组

获取成对出现的条件范围选项(已限定范围、未限定范围)。

例子:

获取范围选项。

criteria.scoping_options

返回:

  • ( Array )

    有作用域、无作用域。



123
124
125
# File 'lib/mongoid/criteria/scopable.rb', line 123

def scoped_options
  [ (定义?(@scoped) ? @scoped : nil), (定义?(@unscoped) ? @unscoped : nil) ]
end

# scoping_options= (options) ⇒数组

将条件范围选项设置为对(有范围、无范围)。

例子:

设置范围选项。

criteria.scoping_options = true, false

参数:

  • 选项 ( Array )

    有作用域、无作用域。

返回:

  • ( Array )

    新的作用域选项。



135
136
137
# File 'lib/mongoid/criteria/scopable.rb', line 135

def scoping_options=(选项)
  @scoped, @unscoped = 选项
end

# unscoped条件

清除条件中的所有范围。

例子:

清除条件中的所有范围。

criteria.unscoped

返回:

  • ( Criteria )

    未限定范围的条件。



97
98
99
100
101
102
103
104
105
# File 'lib/mongoid/criteria/scopable.rb', line 97

def 未限定作用域
  Crit = 克隆
  除非 unscoped?
    Crit.scoped_options = false, true
    Crit.选择器.清除
    Crit.选项.清除
  end
  Crit
end

# unscoped?true | false

条件是否未限定范围?

例子:

条件是否未限定范围?

criteria.unscoped?

返回:

  • ( true | false )

    如果条件为强制取消范围。



113
114
115
# File 'lib/mongoid/criteria/scopable.rb', line 113

def unscoped?
  !!(定义?(@unscoped) ? @unscoped : nil)
end

# with_default_scope条件

如果可以应用默认范围,则获取应用了默认范围的条件。 不能的情况是:如果位于未确定作用域的区块中,如果已强制已将条件取消作用域,或者已应用默认作用域。

例子:

获取具有默认范围的条件。

criteria.with_default_scope

返回:



148
149
150
151
152
# File 'lib/mongoid/criteria/scopable.rb', line 148

def with_default_scope
  Crit = 克隆
  Crit.apply_default_scope if klass.default_scopeable? && !unscoped? && !范围?
  Crit
end