Module: Mongoid::Criterion::Scoping
- Included in:
- Mongoid::Criteria
- Defined in:
- lib/mongoid/criterion/scoping.rb
Instance Method Summary collapse
-
#apply_default_scope ⇒ Criteria
Applies the default scope to the criteria.
-
#remove_scoping(other) ⇒ Criteria
Given another criteria, remove the other criteria’s scoping from this criteria.
-
#scoped(options = nil) ⇒ Criteria
Forces the criteria to be scoped, unless it’s inside an unscoped block.
-
#scoped? ⇒ true, false
Has the criteria had the default scope applied?.
-
#scoping_options ⇒ Array
Get the criteria scoping options, as a pair (scoped, unscoped).
-
#scoping_options=(options) ⇒ Array
Set the criteria scoping options, as a pair (scoped, unscoped).
-
#unscoped ⇒ Criteria
Clears all scoping from the criteria.
-
#unscoped? ⇒ true, false
Is the criteria unscoped?.
-
#with_default_scope ⇒ Criteria
Get the criteria with the default scope applied, if the default scope is able to be applied.
Instance Method Details
#apply_default_scope ⇒ Criteria
Applies the default scope to the criteria.
14 15 16 17 18 19 |
# File 'lib/mongoid/criterion/scoping.rb', line 14 def apply_default_scope klass.without_default_scope do merge!(klass.default_scoping.call) end self. = true, false end |
#remove_scoping(other) ⇒ Criteria
Given another criteria, remove the other criteria’s scoping from this criteria.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/mongoid/criterion/scoping.rb', line 32 def remove_scoping(other) if other selector.reject! do |key, value| other.selector[key] == value end .reject! do |key, value| other.[key] == value end other.inclusions.each do || inclusions.delete_one() end end self end |
#scoped(options = nil) ⇒ Criteria
Forces the criteria to be scoped, unless it’s inside an unscoped block.
57 58 59 60 61 62 63 64 |
# File 'lib/mongoid/criterion/scoping.rb', line 57 def scoped( = nil) crit = clone crit..merge!( || {}) if klass.default_scopable? && !scoped? crit.apply_default_scope end crit end |
#scoped? ⇒ true, false
Has the criteria had the default scope applied?
74 75 76 |
# File 'lib/mongoid/criterion/scoping.rb', line 74 def scoped? !!(defined?(@scoped) ? @scoped : nil) end |
#scoping_options ⇒ Array
Get the criteria scoping options, as a pair (scoped, unscoped).
115 116 117 |
# File 'lib/mongoid/criterion/scoping.rb', line 115 def [ (defined?(@scoped) ? @scoped : nil), (defined?(@unscoped) ? @unscoped : nil) ] end |
#scoping_options=(options) ⇒ Array
Set the criteria scoping options, as a pair (scoped, unscoped).
129 130 131 |
# File 'lib/mongoid/criterion/scoping.rb', line 129 def () @scoped, @unscoped = end |
#unscoped ⇒ Criteria
Clears all scoping from the criteria.
86 87 88 89 90 91 92 93 |
# File 'lib/mongoid/criterion/scoping.rb', line 86 def unscoped crit = clone unless unscoped? crit. = false, true crit.selector.clear; crit..clear end crit end |
#unscoped? ⇒ true, false
Is the criteria unscoped?
103 104 105 |
# File 'lib/mongoid/criterion/scoping.rb', line 103 def unscoped? !!(defined?(@unscoped) ? @unscoped : nil) end |
#with_default_scope ⇒ Criteria
Get the criteria with the default scope applied, if the default scope is able to be applied. Cases in which it cannot are: If we are in an unscoped block, if the criteria is already forced unscoped, or the default scope has already been applied.
144 145 146 147 148 149 150 |
# File 'lib/mongoid/criterion/scoping.rb', line 144 def with_default_scope crit = clone if klass.default_scopable? && !unscoped? && !scoped? crit.apply_default_scope end crit end |