모듈: Mongoid::Changeable
개요
더티 추적에 대한 동작을 정의합니다.
네임스페이스 아래에 정의됨
인스턴스 메서드 요약 접기
-
#attribute_before_last_save(attr) ⇒ 객체
마지막 저장 전 속성의 원래 값을 반환합니다.
-
#변경됨 ⇒ Array<String>
문서 의 변경된 속성을 가져옵니다.
-
#변경되었나요? ⇒ true | false
문서가 변경되었나요?
-
#change_attributes ⇒ Hash<String, Object>
속성 변경 사항을 가져옵니다.
-
#change ⇒ Hash<string, Array<Object, Object> ] 변경 사항입니다.
문서 의 모든 변경 사항을 가져옵니다.
-
#children_changed? ⇒ true | false
이 문서의 하위 문서(내장된 문서)가 변경된 적이 있나요?
-
#move_changes ⇒ 객체
저장 후 이 메서드를 호출하면 변경 사항을 제대로 전환할 수 있습니다.
-
#post_persist ⇒ 객체
문서 가 지속된 후에 실행해야 하는 작업입니다.
-
#이전 변경 사항 ⇒ Hash<string, Array<Object, Object> ] 이전 변경 사항입니다.
문서의 이전 변경 사항을 가져옵니다.
-
#remove_change(name) ⇒ 객체
더티 속성 해시에서 변경 사항을 제거합니다.
-
#saved_change_to_attribute(attr) ⇒ Array<Object> | nil
마지막 저장 중 속성에 대한 변경 사항을 반환합니다.
-
#Saved_change_to_attribute?(attr, from: Utils::PLACEHOLDER, to: Utils::PLACEHOLDER) ⇒ true | false
마지막 저장 중에 이 속성이 변경되었는지 여부를 반환합니다.
-
#setters ⇒ 해시
변경된 각 필드에 대한 모든 새 값을 가져오며, MongoDB $ 설정하다 수정자에 전달됩니다.
-
#will_save_change_to_attribute?(attr, **kwargs) ⇒ true | false
다음에 저장할 때 이 속성이 변경되는지 여부를 반환합니다.
인스턴스 메서드 세부 정보
#attribute_before_last_save(attr) ⇒ 객체
마지막 저장 전 속성의 원래 값을 반환합니다.
이 메서드는 다음의 원래 값을 가져오기 위한 애프터 콜백에서 유용합니다.
an attribute before the save that triggered the callbacks to run.
141 142 143 144 |
# 파일 'lib/mongoid/changeable.rb', 줄 141 def attribute_before_last_save(속성) 속성 = database_field_name(속성) attributes_before_last_save[속성] end |
#변경됨 ⇒ Array<String>
문서 의 변경된 속성을 가져옵니다.
14 15 16 |
# 파일 'lib/mongoid/changeable.rb', 줄 14 def 변경됨 Changed_attributes.키.SELECT { |속성| attribute_change(속성) } end |
#변경되었나요? ⇒ true | false
문서가 변경되었나요?
24 25 26 |
# 파일 'lib/mongoid/changeable.rb', 줄 24 def 변경되었나요? 변경 사항.values.어떤? { |val| val } || children_changed? end |
#change_attributes ⇒ Hash<string, Object>
속성 변경 사항을 가져옵니다.
43 44 45 |
# 파일 'lib/mongoid/changeable.rb', 줄 43 def Changed_attributes @changed_attributes ||= {} end |
#change ⇒ Hash<string, Array<Object, Object> ] changes.
문서 의 모든 변경 사항을 가져옵니다.
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
이는 의도적으로 하위 항목만 고려하고 하위 항목은 고려하지 않습니다.
이 문서 의 하위 문서(내장된 문서)가 변경된 적이 있나요?
33 34 35 |
# 파일 'lib/mongoid/changeable.rb', 줄 33 def children_changed? _children.어떤?(&:changed?) end |
#move_changes ⇒ 객체
저장 후 이 메서드를 호출하면 변경 사항을 제대로 전환할 수 있습니다.
이렇게 하면 메모된 하위 배열의 설정이 해제되고, 새 레코드 플래그를 false로 설정하고, 문서를 유효성이 검사된 것으로 설정하고, 더티 변경 사항을 이동합니다.
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 ⇒ 객체
문서 가 지속된 후에 실행해야 하는 작업입니다.
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> ] 이전 변경 사항.
문서의 이전 변경 사항을 가져옵니다.
92 93 94 |
# 파일 'lib/mongoid/changeable.rb', 줄 92 def 이전_변경 @previous_changes ||= {} end |
#remove_change(name) ⇒ 객체
더티 속성 해시에서 변경 사항을 제거합니다. 단일 필드 원자 업데이트 프로그램에서 사용합니다.
103 104 105 |
# 파일 'lib/mongoid/changeable.rb', 줄 103 def remove_change(이름) Changed_attributes.삭제(이름.to_s) end |
#saved_change_to_attribute(attr) ⇒ Array<Object> | 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.
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 $ 설정하다 수정자에 전달됩니다.
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.
190 191 192 |
# 파일 'lib/mongoid/changeable.rb', 줄 190 def will_save_change_to_attribute?(속성, **kwargs) attribute_changed?(속성, **kwargs) end |