モジュール: Mongoid::Scopable::Classメソッドs

定義:
lib/mongoid/scopable.rb

インスタンス メソッドの概要を折りたたむ

インスタンス メソッドの詳細

デフォルト_スコープ可能= true | false

クラスはデフォルトのスコープを適用できますか。

例:

デフォルトのスコープは適用できますか。

Band.default_scopable?

次の値を返します。

  • true | false

    デフォルトのスコープを適用できる場合。



95
96
97
# ファイル 'lib/mongoid/scopable.rb', 行95

デフォルト default_scopable?
  default_scoping? & & !スレッド.without_default_scope は(自己)
end

#default_scope(value = nil) ⇒ Proc

モデルにデフォルトのスコープを追加します。 このスコープは、 #unscoped が指定されていない限り、すべての条件に適用されます。

例:

基準を使用してデフォルトのスコープを定義します。

class Band
  include Mongoid::Document
  field :active, type: Boolean
  default_scope where(active: true)
end

プロシージャを使用してデフォルトのスコープを定義します。

class Band
  include Mongoid::Document
  field :active, type: Boolean
  default_scope ->{ where(active: true) }
end

パラメーター:

  • 価値 Proc | Criteria (デフォルトはnil

    デフォルトのスコープ。

次の値を返します。

  • Proc

    デフォルトのスコープ。

次の値が発生します。



83
84
85
86
87
# ファイル 'lib/mongoid/scopable.rb', 行83

デフォルト default_scope(価値 = nil)
  価値 = Proc.新着情報 { ノードの数 } 場合 ブロック_指定
  checkpoint_scope_validity(価値)
  自己.default_scoping = process_default_scope(価値)
end

#queryableCriteria

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

クエリ可能な を、スコープ スタックの最後の 1 つまたは新しい 1 つとして取得します。

例:

クエリ可能な を取得します。

Model.queryable

次の値を返します。

  • 基準

    クエリ可能な 。



107
108
109
110
111
# ファイル 'lib/mongoid/scopable.rb', 行107

デフォルト クエリ可能な
  crit = スレッド.current_scope(自己) || 条件.新着情報(自己)
  crit.埋め込み = true 場合 (crit.klass.埋め込み & & !crit.klass.定期的か)
  crit
end

#スコープ(名前、値、ブロック)=オブジェクト

クラス レベルからアクセスできる、または指定された名前によって条件に連結されたスコープを作成します。

例:

名前付きスコープを作成します。


class Person
  include Mongoid::Document
  field :active, type: Boolean
  field :count, type: Integer

  scope :active, -> { where(active: true) }
  scope :at_least, ->(count){ where(:count.gt => count) }
end

パラメーター:

  • name シンボル

    スコープの名前。

  • 価値 Proc

    スコープの条件。

次の値が発生します。



132
133
134
135
136
137
138
139
140
141
# ファイル 'lib/mongoid/scopable.rb', 行132

デフォルト scope(name, 価値, &ブロック)
  正規化された = name.to_sym
  checkpoint_scope_validity(価値)
  checkpoint_scope_name(正規化された)
  _develed_scopes[正規化された] = {
    scope: 価値,
    拡張機能: Module.新着情報(&ブロック)
  }
  refine_scope_method(正規化された)
end

スコープ付き(オプション = nil)=nil) =============================================================================

注:

これにより、デフォルトのスコープが強制的に適用されます。

通常のスコープを持つドキュメントの基準を取得します。

例:

条件を取得します。

Band.scoped(skip: 10)

パラメーター:

  • options ハッシュ (デフォルトはnil

    基準のクエリ オプション。

オプション ハッシュ( options ):

  • :skip 整数

    スキップするドキュメントの数は任意です。

  • :limit 整数

    制限するドキュメントの数の任意。

  • :sort 配列

    任意の並べ替えオプション。

次の値を返します。

  • 基準

    スコープ指定された基準。



158
159
160
# ファイル 'lib/mongoid/scopable.rb', 行158

デフォルト scoped(options = nil)
  クエリ可能な.scoped(options)
end

スコープ=ハッシュ

祖先クラスで定義されたスコープを含む、このクラスに定義されたすべてのスコープのハッシュを返します。

例:

クラスに定義されたスコープを取得する

class Band
  include Mongoid::Document
  field :active, type: Boolean

  scope :active, -> { where(active: true) }
end
Band.scopes

次の値を返します。

  • ハッシュ

    このクラスに定義されているスコープ



51
52
53
54
55
56
57
58
59
# ファイル 'lib/mongoid/scopable.rb', 行51

デフォルト scopes
  defined_scopes = {}
  祖先.. 行う |klass|
    場合 klass.respond_to?(:_develed_scopes)
      defined_scopes.mergeします。(klass._develed_scopes)
    end
  end
  defined_scopes.freeze
end

スコープが設定されていない =条件|オブジェクト

注:

これにより、デフォルトのスコープと .with_scope を使用して適用されたスコープが強制的に削除されます。

スコープが適用されていない状態で基準を取得します。

例:

スコープが設定されていない条件を取得します。

Band.unscoped

スコープのないブロックは中断します。

Band.unscoped do
  Band.where(name: "Depeche Mode")
end

次の値を返します。

  • 条件| オブジェクト

    ブロックのスコープが設定されていない条件または結果。



177
178
179
180
181
182
183
184
185
186
187
# ファイル 'lib/mongoid/scopable.rb', 行177

デフォルト スコープが設定されていない
  場合 ブロック_指定
    without_default_scope 行う
      with_scope(nil) 行う
        ノードの数(自己)
      end
    end
  else
    クエリ可能な.スコープが設定されていない
  end
end

# with_default_scope =基準値別:基準

可能であれば、デフォルトのスコープが適用された基準を取得します。

例:

デフォルトのスコープを持つ基準を取得します。

Model.with_default_scope

次の値を返します。



195
196
197
# ファイル 'lib/mongoid/scopable.rb', 行195

デフォルト with_default_scope
  クエリ可能な.with_default_scope
end

# with_scope (基準) =基準

指定された条件をスコープ スタックにプッシュし、指定されたブロックが生成された後に削除します。

例:

基準に中断します。

Person.with_scope(criteria)

パラメーター:

  • 条件 基準

    適用される基準。

次の値を返します。

  • 基準

    生成された基準。



209
210
211
212
213
214
215
216
217
# ファイル 'lib/mongoid/scopable.rb', 行209

デフォルト with_scope(条件)
   = スレッド.current_scope(自己)
  スレッド.set_current_scope(条件, 自己)
  begin
    ノードの数 条件
  保証する
    スレッド.set_current_scope(, 自己)
  end
end

# without_default_scope ] =オブジェクト

デフォルトのスコープを適用せずにブロックを実行します。

例:

デフォルトのスコープなしで を実行します。

Band.without_default_scope do
  Band.where(name: "Depeche Mode")
end

次の値を返します。

  • オブジェクト

    ブロックの結果。



227
228
229
230
231
232
# ファイル 'lib/mongoid/scopable.rb', 行227

デフォルト without_default_scope
  スレッド.start_Without_default_scope(自己)
  ノードの数
保証する
  スレッド.end_Without_default_scope(自己)
end