모듈: Mongoid::Attributes
- 확장자:
- ActiveSupport::Concern
- 포함 항목:
- 컴포저블
- 다음에 정의됨:
- lib/mongoid/attributes.rb,
lib/mongoid/attributes/nested.rb,
lib/mongoid/attributes/dynamic.rb,
lib/mongoid/attributes/embedded.rb,
lib/mongoid/attributes/readonly.rb,
lib/mongoid/attributes/projector.rb,
lib/mongoid/attributes/ 처리.rb
개요
이 모듈에는 내부 속성 해시를 처리하기 위한 로직과 값을 가져오고 설정하다 하는 방법이 포함되어 있습니다.
네임스페이스 아래에 정의됨
모듈: ClassMethods, Dynamic, Embedded, 중첩, Processing, 읽기 전용 클래스: 프로젝터
인스턴스 속성 요약 접기
-
#attributes ⇒ 객체 (동의어: #raw_attributes)
읽기 전용
속성 속성의 값을 반환합니다.
인스턴스 메서드 요약 접기
-
#Assign_attributes(attrs = nil) ⇒ 객체
:as 옵션을 사용하여 속성 이름(열 이름과 다시 일치) 및 역할 이름과 일치하는 키가 있는 속성 해시를 전달하여 특정 대량 할당 보안 역할의 모든 속성을 설정할 수 있습니다.
-
#attribute_missing?(name) ⇒ true | false
누락된 필드가 있는 데이터베이스 에서 속성을 로드하여 문서 에서 속성이 누락되었는지 확인합니다.
-
#attribute_present?(name) ⇒ true | false
속성이 있는지 확인합니다.
-
#attributes_before_type_cast ⇒ 해시
캐스팅되지 않은 속성을 가져옵니다.
-
#has_attribute?(name) ⇒ true | false
문서에 제공된 속성이 있나요?
-
#has_attribute_before_type_cast?(name) ⇒ true | false
문서 에 속성이 할당되고 유형이 변환되기 전에 제공된 속성이 있나요?
-
#process_raw_attribute(이름, 원시, 필드) ⇒ 객체
비공개
문서 속성에서 방금 읽은 원시 속성 값을 처리합니다.
-
#read_attribute(이름) ⇒ 객체 (동의어: #[])
문서 속성에서 값을 읽습니다.
-
#read_attribute_before_type_cast(name) ⇒ 객체
유형 캐스트 전에 속성에서 값을 읽습니다.
-
#remove_attribute(name) ⇒ 객체
Document
속성에서 값을 제거합니다. -
#typed_attributes ⇒ 객체
유형 캐스트된 속성을 반환합니다.
-
#write_attribute(이름, 값) ⇒ 객체 (동의어: #[]=)
문서 속성 해시에 단일 속성을 씁니다.
-
#write_attributes(attrs = nil) ⇒ 객체 (동의어: #attributes=)
제공된 속성 해시를 문서 에 씁니다.
읽기 전용에 포함된 메서드
Processing에 포함된 메서드
인스턴스 속성 세부 정보
#attributes ⇒ 객체 (읽기 전용) 라고도 함: raw_attributes
속성 속성의 값을 반환합니다.
22 23 24 |
# 파일 'lib/mongoid/attributes.rb', 줄 22 def 속성 @attributes end |
인스턴스 메서드 세부 정보
#Assign_attributes(attrs = nil) ⇒ 객체
:as 옵션을 사용하여 속성 이름(열 이름과 다시 일치) 및 역할 이름과 일치하는 키가 있는 속성 해시를 전달하여 특정 대량 할당 보안 역할의 모든 속성을 설정할 수 있습니다. 대량 할당 보안을 우회하려면 :without_ protection => true 옵션을 사용할 수 있습니다.
218 219 220 221 222 |
# 파일 'lib/mongoid/attributes.rb', 줄 218 def Assign_attributes(attrs = nil) _assigning do process_attributes(attrs) end end |
#attribute_missing?(name) ⇒ true | false
누락된 필드가 있는 데이터베이스 에서 속성을 로드하여 문서 에서 속성이 누락되었는지 확인합니다.
249 250 251 |
# 파일 'lib/mongoid/attributes.rb', 줄 249 def attribute_missing?(이름) !프로젝터.신규(__selected_fields).attribute_or_path_allowed?(이름) end |
#attribute_present?(name) ⇒ true | false
속성이 있는지 확인합니다.
33 34 35 36 37 38 |
# 파일 'lib/mongoid/attributes.rb', 줄 33 def attribute_present?(이름) 속성 = read_raw_attribute(이름) !속성.비어 있나요? || 속성 == 거짓 구출 몽고이드::오류::AttributeNotLoaded 거짓 end |
#attributes_before_type_cast ⇒ 해시
캐스팅되지 않은 속성을 가져옵니다.
46 47 48 |
# 파일 'lib/mongoid/attributes.rb', 줄 46 def attributes_before_type_cast @attributes_before_type_cast ||= {} end |
#has_attribute?(name) ⇒ true | false
문서 에 제공된 속성이 있나요?
58 59 60 |
# 파일 'lib/mongoid/attributes.rb', 줄 58 def has_attribute?(이름) 속성.키?(이름.to_s) end |
#has_attribute_before_type_cast?(name) ⇒ true | false
문서 에 속성이 할당되고 유형이 변환되기 전에 제공된 속성이 있나요?
72 73 74 |
# 파일 'lib/mongoid/attributes.rb', 줄 72 def has_attribute_before_type_cast?(이름) attributes_before_type_cast.키?(이름.to_s) end |
#process_raw_attribute(이름, 원시, 필드) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
문서 속성에서 방금 읽은 원시 속성 값을 처리합니다.
105 106 107 108 109 |
# 파일 'lib/mongoid/attributes.rb', 줄 105 def process_raw_attribute(이름, 원시, 필드) value = 필드 ? 필드.demongoize(원시) : 원시 attribute_write_change!(이름) 만약 value.크기 조정 가능? value end |
#read_attribute(name) ⇒ 객체 []
문서 속성에서 값을 읽습니다. 값이 존재하지 않으면 nil을 반환합니다.
88 89 90 91 92 |
# 파일 'lib/mongoid/attributes.rb', 줄 88 def read_attribute(이름) 필드 = 필드[이름.to_s] 원시 = read_raw_attribute(이름) process_raw_attribute(이름.to_s, 원시, 필드) end |
#read_attribute_before_type_cast(name) ⇒ 객체
유형 캐스트 전에 속성에서 값을 읽습니다. 값이 아직 할당되지 않은 경우 read_raw_attribute를 사용하여 속성의 기존 값을 반환합니다.
122 123 124 125 126 127 128 129 |
# 파일 'lib/mongoid/attributes.rb', 줄 122 def read_attribute_before_type_cast(이름) 속성 = 이름.to_s 만약 attributes_before_type_cast.키?(속성) attributes_before_type_cast[속성] other read_raw_attribute(속성) end end |
#remove_attribute(name) ⇒ 객체
Document
속성에서 값을 제거합니다. 값이 존재하지 않으면 정상적으로 실패합니다.
141 142 143 144 145 146 147 148 149 150 |
# 파일 'lib/mongoid/attributes.rb', 줄 141 def remove_attribute(이름) validate_writeable_field_name!(이름.to_s) as_writable_attribute!(이름) do |액세스| _assigning do attribute_write_change!(액세스) delay_atomic_unsets[atomic_attribute_name(액세스)] = [] 하지 않는 한 new_record? 속성.삭제(액세스) end end end |
#typed_attributes ⇒ 객체
유형 캐스트된 속성을 반환합니다.
259 260 261 |
# 파일 'lib/mongoid/attributes.rb', 줄 259 def typed_attributes attribute_names.map { |이름| [이름, send(이름)] }.to_h end |
#write_attribute(이름, 값) ⇒ 객체 []=
문서 속성 해시에 단일 속성을 씁니다. 또한 전후 업데이트 콜백을 실행하고 필요한 모든 유형 변환을 수행합니다.
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# 파일 'lib/mongoid/attributes.rb', 줄 164 def write_attribute(이름, value) validate_writeable_field_name!(이름.to_s) field_name = database_field_name(이름) 만약 attribute_missing?(field_name) 올리다 몽고이드::오류::AttributeNotLoaded.신규(self.클래스, field_name) end 만약 attribute_writeable?(field_name) _assigning do 현지화된 = 필드[field_name].try(:localized?) attributes_before_type_cast[이름.to_s] = value typed_value = typed_value_for(field_name, value) 하지 않는 한 속성[field_name] == typed_value || attribute_changed?(field_name) attribute_write_change!(field_name) end 만약 현지화된 현재 = 필드[field_name].try(:localize_present?) loc_key, loc_val = typed_value.first 만약 현재 && loc_val.비어 있나요? 속성[field_name]&.삭제(loc_key) other 속성[field_name] ||= {} 속성[field_name].병합!(typed_value) end other 속성[field_name] = typed_value end # 속성을 작성할 때 unset에서도 제거하고, # 제거했다가 쓰기 작업을 수행해도 제거되지 않도록 합니다. delay_atomic_unsets.삭제(field_name) typed_value end other # TODO: MONGOID-5072 end end |
#write_attributes(attrs = nil) ⇒ 객체 ~ 라고도 함: attributes=
제공된 속성 해시를 문서 에 씁니다. 이렇게 하면 기존 속성이 새 Hash
에 있는 경우에만 기존 속성을 덮어쓰고, 다른 속성은 모두 보존됩니다.
235 236 237 |
# 파일 'lib/mongoid/attributes.rb', 줄 235 def write_attributes(attrs = nil) Assign_attributes(attrs) end |