모듈: Mongoid::Persistable::Pushable

확장자:
ActiveSupport::Concern
포함 항목:
Mongoid::Persistable
다음에 정의됨:
lib/mongoid/persistable/pushable.rb

개요

$push 및 $addToSet 작업에 대한 동작을 정의합니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#add_to_set(adds) ⇒ 문서

값이 배열 에 아직 존재하지 않는 경우에만 배열에 단일 값을 추가합니다.

예시:

세트에 값을 추가합니다.

document.add_to_set(names: "James", aliases: "Bond")

매개변수:

  • 추가합니다. (해시)

    추가할 필드/value 쌍입니다.

반환합니다:

  • (문서)

    문서입니다.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 파일 'lib/mongoid/persistable/pushable.rb', 줄 20

def add_to_set(추가합니다.)
  prepare_atomic_operation do |ops|
    process_atomic_operations(추가합니다.) do |필드, value|
      기존 = send(필드) || 속성[필드]
      만약 기존.nil?
        속성[필드] = []
        # 속성에서 값을 읽습니다.
        # https://jira.mongodb.org/browse/MONGOID-4874
        기존 = 속성[필드]
      end
      values = [ value ].flatten(1)
      values. do |val|
        기존.push(val) 하지 않는 한 기존.포함?(val)
      end
      ops[atomic_attribute_name(필드)] = { "$each" => values }
    end
    { "$addToSet" => ops }
  end
end

#push(푸시) ⇒ 문서

단일 값 또는 여러 값을 배열에 푸시합니다.

예시:

단일 값을 배열에 푸시합니다.

document.push(names: "James", aliases: "007")

여러 값을 배열에 푸시합니다.

document.push(names: [ "James", "Bond" ])

매개변수:

  • 푸시 (해시)

    $push 작업.

반환합니다:

  • (문서)

    문서입니다.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 파일 'lib/mongoid/persistable/pushable.rb', 줄 51

def push(푸시)
  prepare_atomic_operation do |ops|
    process_atomic_operations(푸시) do |필드, value|
      기존 = send(필드) || 시작
        속성[필드] ||= []
        속성[필드]
      end
      values = [ value ].flatten(1)
      values.{ |val| 기존.push(val) }
      ops[atomic_attribute_name(필드)] = { "$each" => values }
    end
    { "$push" => ops }
  end
end