모듈: 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
more...

개요

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

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

모듈: 생성 가능, 삭제가능, 삭제 가능 , 증가 가능, 논리적, 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