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

定義:
lib/mongoid/trazerable.rb

Overview

トラバース可能な動作のクラスレベルのメソッド。

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

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

#継承 = true | false

ドキュメントが別のドキュメントのサブクラスであるかどうかを判断します。

例:

ドキュメントがサブクラスであるかどうかを確認します。

Square.hereditary?

次の値を返します。

  • true | false

    継承されている場合は true、そうでない場合は false です。



19
20
21
# ファイル 'lib/mongoid/traaverable.rb' 行19

デフォルト 継承
  !!(スーパークラス < Mongoid::ドキュメント)
end

継承された# サブクラス =オブジェクト

継承するときは、親クラスからフィールドをコピーし、子クラスの を起動するように設定して、Rails Edge で非推奨となった古い Class_inheritable_accessor の動作をエミュレートします。

rust メトリクス/ABCSize

例:

このクラスから継承します。

Person.inherited(Doctor)

パラメーター:

  • サブクラス クラス

    継承クラス。



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# ファイル 'lib/mongoid/traaverable.rb' 行33

デフォルト 継承された(サブクラス)
  スーパー
  @_type = nil
  サブクラス.analyzed_fields = analyzed_fields.dup
  サブクラス.localized_fields = localized_fields.dup
  サブクラス.フィールド = フィールド.dup
  サブクラス.pre_processed_defaults = pre_processed_defaults.dup
  サブクラス.post_processed_defaults = post_processed_defaults.dup
  サブクラス._develed_scopes = ハッシュ.新着情報 { |_hash, キー| _develed_scopes[キー] }
  サブクラス.弁別子_値 = サブクラス.name

  弁別子_値メソッドは次のとおりであるため、ここでこれを行う必要があります。
  上記のサブクラス で がオーバーライドされた場合を考えてみましょう。
  サブクラス.次を含みます: DiscriminatorRetrieval

  # 継承が有効な場合は _type フィールドのみが必要ですが、次が必要です
  : 下位互換性のためにルート クラス にも を追加します。
  return 場合 フィールド.key?(弁別子_キー)

  default_proc = -> { 自己.クラス.弁別子_値 }
  フィールド(弁別子_キー, デフォルト:  default_proc, type: 文字列)
end