모듈: Mongoid::Changeable

확장자:
ActiveSupport::Concern
포함 항목:
컴포저블
다음에 정의됨:
lib/mongoid/changeable.rb

개요

더티 추적에 대한 동작을 정의합니다.

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

모듈: 클래스 메서드 클래스: 무엇이든

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#attribute_before_last_save(attr) ⇒ 객체

마지막 저장 전 속성의 원래 값을 반환합니다.

이 메서드는 다음의 원래 값을 가져오기 위한 애프터 콜백에서 유용합니다.

an attribute before the save that triggered the callbacks to run.

매개변수:

  • 속성 (기호 | string)

    속성의 이름입니다.

반환합니다:

  • (객체)

    마지막 저장 전의 속성 값입니다.



141
142
143
144
# 파일 'lib/mongoid/changeable.rb', 줄 141

def attribute_before_last_save(속성)
  속성 = database_field_name(속성)
  attributes_before_last_save[속성]
end

#변경됨Array<String>

문서 의 변경된 속성을 가져옵니다.

예시:

변경된 속성을 가져옵니다.

model.changed

반환합니다:

  • (Array<String>)

    변경된 속성입니다.



14
15
16
# 파일 'lib/mongoid/changeable.rb', 줄 14

def 변경됨
  Changed_attributes..SELECT { |속성| attribute_change(속성) }
end

#변경되었나요?true | false

문서가 변경되었나요?

예시:

문서가 변경되었나요?

model.changed?

반환합니다:

  • (true | false)

    문서 가 변경된 경우.



24
25
26
# 파일 'lib/mongoid/changeable.rb', 줄 24

def 변경되었나요?
  변경 사항.values.어떤? { |val| val } || children_changed?
end

#change_attributesHash<string, Object>

속성 변경 사항을 가져옵니다.

예시:

속성 변경 사항을 가져옵니다.

model.changed_attributes

반환합니다:

  • (Hash<string, Object>)

    속성이 변경됩니다.



43
44
45
# 파일 'lib/mongoid/changeable.rb', 줄 43

def Changed_attributes
  @changed_attributes ||= {}
end

#changeHash<string, Array<Object, Object> ] changes.

문서 의 모든 변경 사항을 가져옵니다.

예시:

모든 변경 사항을 가져옵니다.

model.changes

반환합니다:

  • (Hash<string, Array<Object, Object> ] 변경 사항.)

    Hash<string, Array<Object, Object> ] 변경 사항입니다.



53
54
55
56
57
58
# 파일 'lib/mongoid/changeable.rb', 줄 53

def 변경 사항
  변경됨.each_with_object({}) do |속성, 변경 사항|
    변경 = attribute_change(속성)
    변경 사항[속성] = 변경 만약 변경
  end.with_in Different_access
end

#children_changed?true | false

참고:

이는 의도적으로 하위 항목만 고려하고 하위 항목은 고려하지 않습니다.

이 문서 의 하위 문서(내장된 문서)가 변경된 적이 있나요?

반환합니다:

  • (true | false)

    변경된 하위 항목이 있는 경우



33
34
35
# 파일 'lib/mongoid/changeable.rb', 줄 33

def children_changed?
  _children.어떤?(&:changed?)
end

#move_changes객체

저장 후 이 메서드를 호출하면 변경 사항을 제대로 전환할 수 있습니다.

이렇게 하면 메모된 하위 배열의 설정이 해제되고, 새 레코드 플래그를 false로 설정하고, 문서를 유효성이 검사된 것으로 설정하고, 더티 변경 사항을 이동합니다.

예시:

변경 사항을 이전으로 이동합니다.

person.move_changes


67
68
69
70
71
72
73
74
# 파일 'lib/mongoid/changeable.rb', 줄 67

def move_changes
  @changes_before_last_save = @previous_changes
  @previous_changes = 변경 사항
  @attributes_before_last_save = @previous_attributes
  @previous_attributes = 속성.dup
  reset_atomic_updates!
  Changed_attributes.지우기
end

#post_persist객체

문서 가 지속된 후에 실행해야 하는 작업입니다.

예시:

게시 지속성을 처리합니다.

document.post_persist


80
81
82
83
84
# 파일 'lib/mongoid/changeable.rb', 줄 80

def post_persist
  reset_persisted_descendants
  reset_attributes_before_type_cast
  move_changes
end

#이전 변경 사항 ⇒ Hash<string, Array<Object, Object> ] 이전 변경 사항.

문서의 이전 변경 사항을 가져옵니다.

예시:

이전 변경 사항을 가져옵니다.

model.previous_changes

반환합니다:

  • (Hash<string, Array<Object, Object> ] 이전 변경 사항.)

    Hash<string, Array<Object, Object> ] 이전 변경 사항입니다.



92
93
94
# 파일 'lib/mongoid/changeable.rb', 줄 92

def 이전_변경
  @previous_changes ||= {}
end

#remove_change(name) ⇒ 객체

더티 속성 해시에서 변경 사항을 제거합니다. 단일 필드 원자 업데이트 프로그램에서 사용합니다.

예시:

플래그가 지정된 변경 사항을 제거합니다.

model.remove_change(:field)

매개변수:

  • 이름 (기호 | string)

    필드의 이름입니다.



103
104
105
# 파일 'lib/mongoid/changeable.rb', 줄 103

def remove_change(이름)
  Changed_attributes.삭제(이름.to_s)
end

#saved_change_to_attribute(attr) ⇒ Array<Object> | nil

마지막 저장 중 속성에 대한 변경 사항을 반환합니다.

매개변수:

  • 속성 (기호 | string)

    속성의 이름입니다.

반환합니다:

  • (Array<Object> | nil)

    속성이 변경된 경우 원래 값과 저장된 값이 포함된 배열 을 반환하고, 그렇지 않으면 nil을 반환합니다.



152
153
154
155
# 파일 'lib/mongoid/changeable.rb', 줄 152

def saved_change_to_attribute(속성)
  속성 = database_field_name(속성)
  이전_변경[속성]
end

#Saved_change_to_attribute?(attr, from: Utils::PLACEHOLDER, to: Utils::PLACEHOLDER) ⇒ true | false

마지막 저장 중에 이 속성이 변경되었는지 여부를 반환합니다.

이 메서드는 애프터 콜백에서 변경 사항을 확인하는 데 유용합니다.

in an attribute during the save that triggered the callbacks to run.

매개변수:

  • 속성 (string)

    속성의 이름입니다.

  • FROM (객체) (기본값: Utils::PLACEHOLDER)

    속성이 변경된 객체 입니다(선택 사항).

  • to (객체) (기본값: Utils::PLACEHOLDER)

    속성이 변경된 객체 (선택 사항)입니다.

반환합니다:

  • (true | false)

    마지막 저장 중에 속성이 변경되었는지 여부입니다.



167
168
169
170
171
172
173
174
175
176
# 파일 'lib/mongoid/changeable.rb', 줄 167

def Saved_change_to_attribute?(속성, from: Utils::자리 표시자, 다음 대상: Utils::자리 표시자)
  변경 사항 = saved_change_to_attribute(속성)
  반환 거짓 하지 않는 한 변경 사항.is_a?(배열)

  반환 true 만약 Utils.placeholder?(FROM) && Utils.placeholder?(to)
  반환 변경 사항.first == FROM 만약 Utils.placeholder?(to)
  반환 변경 사항.last == to 만약 Utils.placeholder?(FROM)

  변경 사항.first == FROM && 변경 사항.last == to
end

#setters해시

변경된 각 필드에 대한 모든 새 값을 가져오며, MongoDB $ 설정하다 수정자에 전달됩니다.

예시:

원자적 업데이트를 위한 세터를 가져옵니다.

person = Person.new(:title => "Sir")
person.title = "Madam"
person.setters # returns { "title" => "Madam" }

반환합니다:

  • (해시)

    원자 설정자의 Hash 입니다.



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# 파일 'lib/mongoid/changeable.rb', 줄 116

def 세터
  mods = {}
  변경 사항.각각의 쌍 do |이름, 변경 사항|
    다음 하지 않는 한 변경 사항

    old, 신규 = 변경 사항
    필드 = 필드[이름]
     = atomic_attribute_name(이름)
    만약 필드&.크기 조정 가능?
      필드.add_atomic_changes(self, 이름, , mods, 신규, old)
    other
      mods[] = 신규 하지 않는 한 atomic_unsets.포함?()
    end
  end
  mods
end

#will_save_change_to_attribute?(attr, **kwargs) ⇒ true | false

다음에 저장할 때 이 속성이 변경되는지 여부를 반환합니다.

이 메서드는 유효성 검사 및 콜백 전에 다음을 확인하는 데 유용합니다.

if the next call to save will change a particular attribute.

매개변수:

  • 속성 (string)

    속성의 이름입니다.

  • **kwargs

    선택적 키워드 인수입니다.

반환합니다:

  • (true | false)

    다음에 저장할 때 속성이 변경되는지 여부입니다.



190
191
192
# 파일 'lib/mongoid/changeable.rb', 줄 190

def will_save_change_to_attribute?(속성, **kwargs)
  attribute_changed?(속성, **kwargs)
end