모듈: Mongoid::Persistable

확장자:
ActiveSupport::Concern
다음을 포함합니다.
생성 가능, 삭제 가능 , 삭제가능, 증가가능, 로직, Maxable, Minable, Multipliable, 팝업 가능 , pullable, pushable, Renameable, Savable, Settable, Unsettable, 업데이트 가능 , Upsertable , Positional
포함 항목:
컴포저블
다음에 정의됨:
lib/mongoid/persistable.rb,
lib/mongoid/persistable/logical.rb,
lib/mongoid/persistable/maxable.rb,
lib/mongoid/persistable/minable.rb,
lib/mongoid/persistable/savable.rb,
lib/mongoid/persistable/poppable.rb,
lib/mongoid/persistable/pullable.rb,
lib/mongoid/persistable/pushable.rb,
lib/mongoid/persistable/settable.rb,
lib/mongoid/persistable/creatable.rb,
lib/mongoid/persistable/deletable.rb,
lib/mongoid/persistable/renameable.rb,
lib/mongoid/persistable/updatable.rb,
lib/mongoid/persistable/unsettable.rb,
lib/mongoid/persistable/upsertable.rb,
lib/mongoid/persistable/destoryable.rb,
lib/mongoid/persistable/multipliable.rb,
lib/mongoid/persistable/증분 가능.rb

개요

지속성 작업에 대한 일반적인 동작을 포함합니다.

네임스페이스 아래에 정의됨

모듈: 생성 가능, 삭제가능, 삭제 가능 , 증가 가능, 논리적, Maxable,Minable, Multipliable, 팝업 가능, pullable, pushable, Renameable, Savable, Settable, Unsettable ,업데이트 가능 , Upsertable

상수 요약 접기

LIST_OPERATIONS =

db에서 배열이나 세트를 처리하는 원자 조작입니다.

[ "$addToSet", "$push", "$pull", "$pullAll" ].동결

인스턴스 메서드 요약 접기

Unsettable에 포함된 메서드

#unset

Upsertable에 포함된 메서드

#upsert

업데이트 가능에 포함된 메서드

#update, #update!, #update_attribute

Settable에 포함된 메서드

#set

Savable에 포함된 메서드

#save, #save!

Renameable에 포함된 메서드

#rename

푸시 가능에 포함된 메서드

#add_to_set, #push

pullable에 포함된 메서드

#pull, #pull_all

Positional에 포함된 메서드

#positionally

Poppable에 포함된 메서드

#pop

Multipliable에 포함된 메서드

#mul

Minable에 포함된 메서드

#set_min

Maxable에 포함된 메서드

#set_max

로직에 포함된 메서드

#bit

Incrementable에 포함된 메서드

#inc

Destoryable에 포함된 메서드

#destory, #destory!

Deletable에 포함된 메서드

# 삭제

Createable에 포함된 메서드

#insert

인스턴스 메서드 세부 정보

#원자적으로(join_context: nil) ⇒ true | false

차단 내부에서 발생하는 모든 작업을 원자 단위로(단일 데이터베이스 호출에서) 실행합니다. 이 메서드는 아래에 설명된 옵션에 따라 동작하는 에 대한 추가 호출을 원자적으로 중첩하는 것을 지원합니다.

join_context 옵션을 지정하면 참일 때 지정된 블록에서 선언한 작업을 동일한 문서에 대한 현재 호출을 원자 단위로 래핑하는 블록과 병합하는(있는 경우) 병합합니다. 이 블록 또는 동일한 컨텍스트를 공유하는 다른 블록이 지속되기 전에 발생하면 해당 컨텍스트의 모든 작업이 지속되지 않으며 메모리에서도 재설정됩니다.

join_context가 false이면 지정된 작업 블록이 다른 컨텍스트와 독립적으로 유지됩니다. 이 블록이 실행되고 변경 사항을 유지할 수 있는 한 다른 컨텍스트에서의 오류는 이 블록에 영향을 주지 않습니다.

join_context의 기본값 은 전역 구성 옵션 join_contexts에 의해 설정하다 되며, 기본값 은 false입니다.

예시:

작업을 원자 단위로 실행합니다.

document.atomically do
  document.set(name: "Tool").inc(likes: 10)
end

일부 내부 작업은 원자 단위로 실행하되 외부 작업과는 독립적으로 실행합니다.


document.atomically do
  document.inc likes: 10
  document.atomically join_context: false do
    # The following is persisted to the database independently.
    document.unset :origin
  end
  document.atomically join_context: true do
    # The following is persisted along with the other outer operations.
    document.inc member_count: 3
  end
  document.set name: "Tool"
end

매개변수:

  • join_context (true | false) (기본값: nil)

    컨텍스트에 조인합니다(예: 선언된 원자 연산 병합)을 사용하여 동일한 문서 에 대해 이를 원자 차단 으로 래핑합니다(있는 경우).

반환합니다:

  • (true | false)

    작업이 성공한 경우.



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# 파일 'lib/mongoid/persistable.rb', 94줄

def 원자적으로(join_context: nil)
  join_context = 몽고이드.join_contexts 만약 join_context.nil?
  호출 깊이 = @atomic_depth ||= 0
  has_own_context = 호출 깊이.zero? || !join_context
  @atomic_updates_to_execute_stack ||= []
  _mongoid_push_atomic_context 만약 has_own_context

  만약 block_given?
    @atomic_depth += 1
    yield(self)
    @atomic_depth -= 1
  end

  만약 has_own_context
    persist_atomic_operations @atomic_context
    _mongoid_remove_atomic_context_changes
  end

  true
구출 StandardError => e
  _mongoid_reset_atomic_context_changes! 만약 has_own_context
  올리다 e
보장
  _mongoid_pop_atomic_context 만약 has_own_context

  만약 호출 깊이.zero?
    @atomic_depth = nil
    @atomic_updates_to_execute_stack = nil
  end
end

#fail_due_to_callback!(메서드) ⇒ 객체

콜백 이 실패하면 오류를 발생시킵니다.

예시:

콜백 오류를 발생시킵니다.

Person.fail_due_to_callback!(person, :create!)

매개변수:

  • 메서드 (기호)

    호출되는 메서드입니다.

다음을 발생시킵니다.



143
144
145
# 파일 'lib/mongoid/persistable.rb', 143줄

def fail_due_to_callback!(메서드)
  올리다 오류::Callback.신규(self.클래스, 메서드)
end

#fail_due_to_validation!객체

유효성 검사 에 실패하면 오류를 발생시킵니다.

예시:

유효성 검사 오류를 발생시킵니다.

Person.fail_due_to_validation!(person)

다음을 발생시킵니다.



131
132
133
# 파일 'lib/mongoid/persistable.rb', 131줄

def fail_due_to_validation!
  올리다 오류::유효성 검사.신규(self)
end