クラス: Mongoid::Attributes::Projector Private

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
lib/mongoid/attributes/projector.rb

Overview

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

このモジュールは プロジェクション ヘルパーを定義します。

プロジェクション ルールはどちらかというと簡単ではありません。 www.mongodb.com/ja-jp/docs/manual/reference/method/db.collection.find/#find-projectionを参照してください。 サーバー ドキュメント用。 4.4サーバー(およびほぼすべての古いサーバー)では、コンテンツ フィールドのプロジェクションが除外的または包含的のいずれかである必要があります。つまり、同じクエリで除外と包含を混在させることはできません。 ただし、コンテンツフィールドを含むプロジェクションでは、_id を除外できます。 この書き込みの時点で、 0と1以外の整数プロジェクションの値は正式にドキュメント化されていません。 DOCSP- 15266を参照してください。 4.4サーバーでは、ドット表記に加えてネストされたハッシュ プロジェクションの指定も許可されています。これは Mongoid がまだ処理しないと想定されます。

インスタンス属性の概要を折りたたむ

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

コンストラクターの詳細

#Initialize (プロジェクション)=プロジェクション

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

プロジェクションの新しいインスタンスを返します。



24
25
26
27
28
29
30
31
32
33
# ファイル 'lib/mongoid/attributes/projector.rb' は、 24行を

デフォルト 初期化(プロジェクション)
  場合 プロジェクション
    @content_projection = プロジェクション.dup
    @content_projection.削除('_id')
    @id_projection_value = プロジェクション['_id']
  else
    @content_projection = nil
    @id_projection_value = nil
  end
end

インスタンス属性の詳細

#content_projection =オブジェクト(読み取り専用)

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



36
37
38
# ファイル 'lib/mongoid/attributes/projector.rb' は、 36行を

デフォルト content_projection
  @content_projection
end

# id_projection_value =オブジェクト(読み取り専用)

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



35
36
37
# ファイル 'lib/mongoid/attributes/projector.rb' は、 35行を

デフォルト id_projection_value
  @id_projection_value
end

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

属性_or_path_allowed? (name) = true | false

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

指定された属性またはドット表記パスが構成されたプロジェクションで許可されているかどうか(許可されている場合)を判断します。

構成されたプロジェクションがない場合、 は true を返します。

パラメーター:

  • name ( string )

    属性またはドット表記パスの名前。

次の値を返します。

  • true | false

    属性がプロジェクションで許可されているかどうか。



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# ファイル 'lib/mongoid/attributes/projector.rb' は、 48行を

デフォルト 属性_or_path_allowed?(name)
  # _id の特別な処理。
  場合 name == '_id'
    結果 = ただし、 id_projection_value.nil?
      value_includer(id_projection_value)
    else
      true
    end
    return 結果
  end

  場合 content_projection.nil?
    # プロジェクションはありません(空のプロジェクションではない)。
    # すべての属性が許可されます。
    return true
  end

  # 要求された名前やパスと一致する、または要求された名前やパスの親であるアイテムを検索します。
  # これは、たとえば、プロジェクションが次の場合に対応します:
  {foo: true} と、foo.bar が許可されているかどうかを確認したい。
  item, 価値 = content_projection.検出 行う |path, 価値|
    (name + '.').start_with?(path + '.')
  end
  場合 item
    return value_includer(価値)
  end

  場合 content_includer
    # 要求された名前やパスの厳密な子であるアイテムを検索します。
    # これは、たとえば、プロジェクションが次の場合に対応します:
    # {"foo.bar" => true} と、foo が許可されているかどうかを確認したい。
    #(バーのコンテナです)
    item, 価値 = content_projection.検出 行う |path, 価値|
      (path + '.').start_with?(name + '.')
    end
    場合 item
      return true
    end
  end

  !content_includer
end