クラス: Mongoid::Fields::ForeignKey

継承:
標準
  • オブジェクト
すべて表示
定義:
lib/mongoid/fields/foreign_key.rb

Overview

別のドキュメントの ID を参照する外部キーを保存する BSON ドキュメント フィールド定義を表します。 関連付け動作に使用されます。

インスタンス属性の概要

標準から継承された属性

#default_val# labels#name#options

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

標準から継承されたメソッド

、 、 、 #localizedか?#pre_processed?#type

コンストラクターの詳細

このクラスは、 Mongoid::Fields::standardからコンストラクターを継承します。

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

#add_atomic_changes (document, name, key, Mods, new_elements, old_elements) =オブジェクト

このタイプのサイズ変更可能なフィールドにアトミックな変更を追加します。

@todo: リファクター、ビッグタイム。

例:

アトミックな変更を追加します。

field.add_atomic_changes(doc, "key", {}, [], [])

パラメーター:

  • ドキュメント ドキュメント

    追加するドキュメント。

  • name ( string )

    フィールドの名前。

  • キー ( string )

    フィールドのアトミックなロケーション。

  • 修飾子 ハッシュ

    現在の変更内容。

  • new_Elements 配列

    追加する新しい要素。

  • old_elements 配列

    古い要素が削除されます。



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 25行を

デフォルト add_aごとの変更(ドキュメント, name, キー, 修飾子, new_Elements, old_elements)
  old = (old_elements || [])
  新着情報 = (new_Elements || [])
  場合 新着情報.Length > old.Length
    場合 新着情報.最初に(old.Length) == old
      ドキュメント.atomic_array_add_to_sets[キー] = 新着情報.drop(old.Length)
    else
      修飾子[キー] = ドキュメント.属性[name]
    end
  elsif 新着情報.Length < old.Length
    プル = old - 新着情報
    場合 新着情報 == old - プル
      ドキュメント.アトミック_array_pulls[キー] = プル
    else
      修飾子[キー] = ドキュメント.属性[name]
    end
  elsif 新着情報 != old
    修飾子[キー] = ドキュメント.属性[name]
  end
end

# accumulate ( Object ) = オブジェクト

オブジェクトを ID 互換オブジェクトに展開します。

例:

オブジェクトを展開します。

field.evolve(object)

パラメーター:

  • オブジェクト オブジェクト

    展開するオブジェクト。

次の値を返します。

  • オブジェクト

    展開オブジェクト。



64
65
66
67
68
69
70
71
72
73
74
75
76
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 64行を

デフォルト 量用(オブジェクト)
  場合 object_id_field || オブジェクト.is_a?(ドキュメント)
    場合 関連付け.多態的か
      関連付け.convert_to_foreign_key(オブジェクト)
    elsif オブジェクト.is_a?(ドキュメント) & & オブジェクト.respond_to?(関連付け.プライマリ_キー)
      プライマリ_キー_フィールド.量用(オブジェクト.送信(関連付け.プライマリ_キー))
    else
      オブジェクト._v_object_id__
    end
  else
    associated_id_field.量用(オブジェクト)
  end
end

は、 foreign_key をサポートしていますか。 = true | false

このフィールドは外部キーか?

例:

フィールドは外部キーかどうか

field.foreign_key?

次の値を返します。

  • true | false

    フィールドが外部キーの場合。



52
53
54
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 52行を

デフォルト foreign_key?
  true
end

#遅延= true | false

このフィールドは遅延デフォルト評価を行いますか。

例:

フィールドは遅延していますか。

field.lazy?

次の値を返します。

  • true | false

    フィールドが遅延されている場合。



84
85
86
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 84行を

デフォルト lazy?
  タイプ.サイズ変更可能か
end

# mongoize (object) =オブジェクト

オブジェクトをmongo double 値に MongoDB 化します。

例:

オブジェクトを Mongoize します。

field.mongoize(object)

パラメーター:

  • オブジェクト オブジェクト

    Mongoize するオブジェクト。

次の値を返します。

  • オブジェクト

    mongoized オブジェクト。



96
97
98
99
100
101
102
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 96行を

デフォルト mongoize(オブジェクト)
  場合 タイプ.サイズ変更可能か || object_id_field
    mongoize_foreign_key(オブジェクト)
  else
    associated_id_field.mongoize(オブジェクト)
  end
end

オブジェクト_id_field = true | false

フィールドは BSON::ObjectId かどうか

例:

フィールドは BSON::ObjectId かどうか

field.object_id_field?

次の値を返します。

  • true | false

    フィールドが BSON::ObjectId の場合。



110
111
112
113
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 110行を

デフォルト object_id_field
  @object_id_field ||=
      関連付け.多態的か ? true : 関連付け.klass.using_object_ids?
end

サイズは変更可能ですか? = true | false

配列の場合は true を返し、配列でない場合は false を返します。

例:

フィールドのサイズは変更可能かどうか。

field.resizable?

次の値を返します。

  • true | false

    フィールドのサイズが変更可能な場合。



121
122
123
# ファイル 'lib/mongoid/fields/foreign_key.rb' は、 121行を

デフォルト サイズ変更可能か
  タイプ.サイズ変更可能か
end