モジュール: Mongoid::Persistable::Setable
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- Mongoid::Persistable
- 定義:
- lib/mongoid/persistable/settable.rb
Overview
$set 操作の動作を定義します。
インスタンス メソッドの概要を折りたたむ
-
#セット(セッター) = ドキュメント = ドキュメント
指定されたフィールドと値のペアに対して $set 操作を実行し、メモリ内のドキュメントに値を設定します。
インスタンス メソッドの詳細
#セット(セッター) = ドキュメント =ドキュメント
指定されたフィールドと値のペアに対して $set 操作を実行し、メモリ内のドキュメントに値を設定します。
キーは、ドットを含むキーのシーケンスにすることができます。その場合、最上位のフィールドはネストされたハッシュとして扱われ、欠落しているキーは自動的に作成されます。
このようにネストされたセットを実行すると、中間キーの値がマージされます。
最上位のフィールドがハッシュでない場合、その元の値は破棄され、フィールドはハッシュに置き換えられます。
MongoDB の $set と違い、Mongoid の セットは、ネストされたハッシュ セマンティクスで フィールドのサブセットを設定する場合でも、 フィールド全体を書込むことに注意してください。 つまり、ネストされたハッシュ セマンティクスで $set を実行すると、データベースの最上位フィールド内の他のハッシュ キーが上書きされます。
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 90 91 |
# ファイル 'lib/mongoid/永続的/settable.rb' 行48 デフォルト セット(セッター) 準備_アトミック_操作 行う |ops| Process_アトミック_操作(セッター) 行う |フィールド, 価値| field_Seq = フィールド.to_s.分裂('.') フィールド = field_Seq.シフト 場合 field_Seq.Length > 0 ネストされたハッシュ パス old_value = 属性[フィールド] # 古い値がハッシュでない場合は、それを閉じます ただし、 ハッシュ === old_value old_value = {} end 必要に応じて中間キーを作成して、ハッシュに降順 cursor_value = old_value 一方 field_Seq.Length > 1 cursor_key = field_Seq.シフト タイプがハッシュでない場合は、各レベルで が必要になります ただし、 ハッシュ === cursor_value[cursor_key] cursor_value[cursor_key] = {} end cursor_value = cursor_value[cursor_key] end #現在、リーフレベルでは、セットを実行します # と は、以前はこのレベルにあったものを上書きします。 cursor_value[field_Seq.シフト] = 価値 # と の値を最上位レベルのフィールドの値に設定します # これは $set に渡す値であるため 価値 = old_value end process_attribute(フィールド, 価値) ただし、 関係.include?(フィールド.to_s) ops[アトミック_attribute_name(フィールド)] = 属性[フィールド] end end { " $set " => ops } ただし、 ops.空の場合 end end |