クラス: Mongoid::関連付け::ネストされた::Many

継承:
オブジェクト
  • オブジェクト
すべて表示
次のことが含まれます。
構築可能
定義:
lib/mongoid/関連付け/ Nested/many.rb

Overview

多対 n の関連付けで属性割り当てを実行するために使用されるビルダ クラス。

インスタンス属性の概要

Buildableに含まれる属性

関連付け属性既存の 、オプション

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

Buildableに含まれるメソッド

#allow_detroy?#convert_id#reject?#update_only

コンストラクターの詳細

#初期化(関連付け、属性、オプション = {{}) =多数

1 対多の関連付けでネストされた属性の新しいビルダを作成します。

例:

ビルダを初期化します。

Many.new(association, attributes, options)

パラメーター:

  • 関連付け Mongoid::関連付け::Relatable

    関連付けメタデータ。

  • 属性 ハッシュ

    属性を ハッシュ して設定します。

  • options ハッシュ (デフォルトは{}です)

    定義されているオプション。



55
56
57
58
59
60
61
62
63
64
65
66
# ファイル 'lib/mongoid/asaction/nessed/many.rb' 行55

デフォルト 初期化(関連付け, 属性, options = {})
  @attributes = 場合 属性.respond_to?(:with_in distinct_access)
                  属性.with_in distinct_access.sort 行う |a, b|
                    a[0].to_i <============================= b[0].to_i
                  end
                else
                  属性
                end
  @関連付け = 関連付け
  @options = options
  @Class_name = options[:Class_name] ? options[:Class_name].定数化 : 関連付け.klass
end

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

ビルド(親、オプション = {}) =配列

マイクロに渡された属性とオプションに応じて関連付けを構築します。

これにより、既存の関連付けの更新、新しいドキュメントへの関連付けの置き換え、または関連付けの削除のいずれかの3操作が実行されます。

属性がハッシュまたはキーと値のペアの配列でない場合、引数エラーが発生します。

例:

ネストされた Atlas を構築します。

many.build(person)

パラメーター:

  • ドキュメント

    関連付けの親ドキュメント。

  • options ハッシュ (デフォルトは{}です)

    オプション。

次の値を返します。

  • 配列

    属性。

次の値が発生します。



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# ファイル 'lib/mongoid/asaction/nessed/many.rb' 行28

デフォルト 構築(, options = {})
  @existing = .送信(関連付け.name)
  発生 Errors::ToMany NestedAttributeRecords.新着情報(exist, options[:limit]) 場合 over_limit?(属性)

  属性. 行う |attrs|
    場合 attrs.is_a?(::ハッシュ)
      process_attributes(, attrs.with_in distinct_access)
    elsif attrs.is_a?(配列) & & attrs.Length > 1 & & attrs[1].respond_to?(:with_in distinct_access)
      process_attributes(, attrs[1].with_in distinct_access)
    elsif attrs.is_a?(配列) & & attrs.Length.さらに
      process_attributes(, ハッシュ[*attrs].with_in distinct_access)
    else
      発生 ArgumentError,
            "ネストされた関連付け の属性 '#{associated.name}' は、ハッシュまたはキーと値のペアの配列である必要があります。"
    end
  end
end