模块:Mongoid::Criteria::Scopable

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

Overview

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

实例方法摘要折叠

实例方法详细信息

# apply_default_scope条件

将默认范围应用于条件。

例子:

应用默认范围。

criteria.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.scoped_options = true, false
end

# apply_scope (scope) ⇒ Criteria

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

将范围应用于当前条件。

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

参数:

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

    要应用的范围。

返回:

  • ( Criteria )

    已应用范围的条件。



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

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

例子:

删除范围。

criteria.remove_scoping(other)

参数:

  • 其他 ( Criteria )

    其他标准。

返回:

  • ( 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 |meta|
      包含.delete_one(meta)
    end
  end
  self
end

#scoped (options = nil) ⇒ Criteria

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

例子:

强制限定条件范围。

criteria.scoped(skip: 10)

参数:

  • 选项 哈希 (默认为: 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

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

例子:

是否应用了默认范围?

criteria.scoped?

返回:

  • ( true | false )

    如果应用了默认范围。



92
93
94
# File 'lib/mongoid/criteria/scopable.rb', line 92

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

# scoping_options数组

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

例子:

获取范围选项。

criteria.scoping_options

返回:

  • ( Array )

    有作用域、无作用域。



127
128
129
# File 'lib/mongoid/criteria/scopable.rb', line 127

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

# scoping_options= (options) ⇒数组

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

例子:

设置范围选项。

criteria.scoping_options = true, false

参数:

  • 选项 ( Array )

    有作用域、无作用域。

返回:

  • ( Array )

    新的作用域选项。



139
140
141
# File 'lib/mongoid/criteria/scopable.rb', line 139

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

# unscoped条件

清除条件中的所有范围。

例子:

清除条件中的所有范围。

criteria.unscoped

返回:

  • ( Criteria )

    未限定范围的条件。



102
103
104
105
106
107
108
109
# File 'lib/mongoid/criteria/scopable.rb', line 102

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

# unscoped?true | false

条件是否未限定范围?

例子:

条件是否未限定范围?

criteria.unscoped?

返回:

  • ( true | false )

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



117
118
119
# File 'lib/mongoid/criteria/scopable.rb', line 117

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

# with_default_scope条件

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

例子:

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

criteria.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