모듈: Mongoid::Fields
- 확장자:
- ActiveSupport::Concern
- 포함 항목:
- 컴포저블
- 다음에 정의됨:
- lib/mongoid/fields.rb,
lib/mongoid/fields/standard.rb,
lib/mongoid/fields/ 암호화됨.rb,
lib/mongoid/fields/localized.rb,
lib/mongoid/fields/foreign_key.rb,
lib/mongoid/fields/validators/macro.rb
개요
이 모듈은 필드의 동작을 정의합니다.
네임스페이스 아래에 정의됨
모듈: ClassMethods, 유효성 검사기 클래스: Encrypted, foreignKey, Localized, Standard
상수 요약 접기
- StringifiedSymbol =
몽고이드::StringifiedSymbol
- 부울 =
몽고이드::부울
- TYPE_MAPPINGS =
기호로 정의된 필드에는 올바른 클래스를 사용하세요.
{ 배열: 배열, big_decimal: BigDecimal, 바이너리: BSON::바이너리, 부울: 몽고이드::부울, 날짜: 날짜, date_time: 날짜/시간, float: Float, 해시: 해시, 정수: Integer, object_id: BSON::ObjectId, 범위: 범위, regexp: 정규 표현식, 설정하다: 세트, string: 문자열, stringified_symbol: StringifiedSymbol, 기호: 기호, 시간: 시간 }.with_in Different_access
- IDS =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
문서 에 있는 _id 필드 의 모든 이름에 대한 상수입니다.
여기에는 _id 필드 의 별칭이 포함되지 않습니다.
[ :_id, '_id', ].동결
- INVALID_BSON_CLASSES =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
필드 유형으로 지원되지 않는 BSON 클래스
[ BSON::Decimal128, BSON::Int32, BSON::Int64 ].동결
클래스 메서드 요약 접기
-
.database_field_name(이름, 관계, aliased_fields, aliased_associations) ⇒ string
비공개
데이터베이스 에 저장된 제공된 필드 의 이름을 가져옵니다.
-
.옵션(option_name, &block) ⇒ 객체
지정된 옵션 이름이 필드에 정의되어 있을 때 실행할 제공된 블록을 저장합니다.
-
.options ⇒ Hash
사용자 지정 옵션 이름 맵을 해당 핸들러에 반환합니다.
-
.traverse_association_tree(키, 필드, 연관 관계, aliased_associations) {|The, The, When| ... } ⇒ 필드
비공개
연관 트리를 아래로 이동하여 주어진 키에 대한 필드 를 검색 합니다.
인스턴스 메서드 요약 접기
-
#apply_default(name) ⇒ 객체
지정된 이름에 단일 기본값 을 적용합니다.
-
#apply_defaults ⇒ 객체
모든 기본값을 한 번에 적용합니다.
-
#apply_post_processed_defaults ⇒ Array<String>
문서 에 기본값인 모든 기본값 을 적용합니다.
-
#apply_pre_processed_defaults ⇒ Array<String>
절차가 아닌 문서에 모든 기본값을 적용합니다.
-
#attribute_names ⇒ Array<String>
이 객체 에서 사용할 수 있는 속성의 이름 배열 을 반환합니다.
-
#database_field_name(name) ⇒ string
데이터베이스 에 저장된 제공된 필드 의 이름을 가져옵니다.
-
#dot_dollar_field?(name) ⇒ true | false
비공개
이 필드가 달러 기호($)로 시작하나요, 아니면 점/마침표(.)를 포함하나요?
-
#Lazy_settable?(필드, 값) ⇒ true | false
제공된 필드 가 지연 평가입니까?
-
#using_object_ids? ⇒ true | false
문서 가 객체 ID를 사용하고 있나요?
-
#validate_writeable_field_name!(name) ⇒ 객체
비공개
필드 가 달러 기호($)로 시작하는지 또는 점/마침표(.)를 포함하는지 확인합니다.
클래스 메서드 세부 정보
.database_field_name(이름, 관계, aliased_fields, aliased_associations) ⇒ string
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
데이터베이스 에 저장된 제공된 필드 의 이름을 가져옵니다. 필드 의 별칭 지정 여부를 결정하는 데 사용됩니다. 마침표 "."로 구분된 내장된 문서 및 필드의 별칭을 재귀적으로 찾습니다. 문자.
이 메서드는 데이터베이스에 저장된 연관 관계의 이름을 반환하는 반면, 'relations' 해시는 코드 내 별칭을 사용합니다. 관계 해시의 멤버십을 확인하려면 먼저 aliased_associations 해시에서 이 메서드에서 반환된 string 을 조회해야 합니다.
이 메서드는 마지막 항목이 아닌 types_to 연관 관계의 별칭을 확장하지 않습니다. 예를 예시, has_many 학생이 있는 학교가 있고 전달된 필드 이름이 (Student의 관점에서) 다음과 같은 경우:
school._id
types_to 연관 관계의 별칭은 해당 연관 관계의 _id 필드입니다. 따라서 이 연관 관계를 확장하면 다음과 같은 결과가 나타납니다.
school_id._id
여기서 의도는 _id 필드 의 속성 을 가져오지 않았기 때문에 올바른 필드 이름이 아닙니다. 의도는 참조 문서 의 속성 을 가져오는 것입니다. 따라서 전달된 이름의 일부가 이름의 마지막 부분이 아닌 exists_to 연관 관계인 경우, 해당 별칭을 확장하지 않고 다음을 반환합니다.
school._id
types_to 연관 관계가 이름의 마지막 부분인 경우, _id 필드 를 다시 전달합니다.
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 |
# 파일 'lib/mongoid/fields.rb', 410줄 def database_field_name(이름, 관계, aliased_fields, aliased_associations) 반환 nil 하지 않는 한 이름.현재? 키 = 이름.to_s 세그먼트, 나머지 = 키.split('.', 2) # 필드 의 별칭을 가져오지 않습니다. #이 마지막 항목이 아닙니다. 따라서 다음 중 하나가 완료되면 별칭을 가져옵니다. # 다음이 참입니다: # 1. 이 항목이 마지막 항목이므로 남은 항목이 없습니다. # 2. 협회가 아닙니다. # 3. 속해 있는 연관 관계가 아닙니다. 만약 !나머지 || !관계.키?(세그먼트) || !관계[세그먼트].is_a?(연관 관계::참조됨::Belongs To) 세그먼트 = aliased_fields[세그먼트]&.dup || 세그먼트 end 반환 세그먼트 하지 않는 한 나머지 관계 = 관계[aliased_associations[세그먼트] || 세그먼트] 만약 관계 k = 관계.class "#{세그먼트}.#{database_field_name(나머지, k.관계, k.aliased_fields, k.aliased_associations)}" other "#{세그먼트}.#{나머지}" end end |
.옵션(option_name, &block) ⇒ 객체
지정된 옵션 이름이 필드에 정의되어 있을 때 실행할 제공된 블록을 저장합니다.
핸들러가 어떤 기능을 수행할 수 있는지에 대한 가정은 이루어지지 않으므로 필드 정의에 'option_name' 키가 제공되면 false 또는 nil인 경우에도 항상 호출됩니다.
293 294 295 |
# 파일 'lib/mongoid/fields.rb', 293줄 def 옵션(option_name, &차단) [option_name] = 차단 end |
.options ⇒ Hash
사용자 지정 옵션 이름 맵을 해당 핸들러에 반환합니다.
304 305 306 |
# 파일 'lib/mongoid/fields.rb', 304줄 def @options ||= {} end |
.traverse_association_tree(키, 필드, 연관 관계, aliased_associations) {|The, The, When| ... } ⇒ 필드
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연관 트리를 아래로 이동하여 주어진 키에 대한 필드 를 검색 합니다. 이렇게 하려면 키를 '.'로 분할 합니다. 키의 각 부분(meth)에 대해 다음을 수행합니다.
-
meth가 필드 인 경우 meth, 필드 및 is_field를 true로 반환합니다.
-
메타데이터가 연관 관계인 경우, klass를 연관 관계의 klass로 업데이트 하고, meth, klass 및 is_field를 false로 반환합니다.
다음 반복에서는 klass의 필드와 연결을 사용하여 트리를 계속 탐색합니다.
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
# 파일 'lib/mongoid/fields.rb', 335줄 def traverse_association_tree(키, 필드, 연관 관계, aliased_associations) class = nil 필드 = nil 키.split('.').each_with_index do |meth, i| fs = i == 0 ? 필드 : class&.필드 rs = i == 0 ? 연관 관계 : class&.관계 방식 = i == 0 ? aliased_associations : class&.aliased_associations # 연관 관계에는 이름과 별칭이라는 두 개의 "키"가 있을 수 있습니다. # 필드 이름은 klass의 관계에 저장하는 데 사용됩니다. # 및 필드 해시, 별칭은 해당 필드 를 저장 하는 데 사용됩니다. # 데이터베이스. 이 함수에 입력된 키는 별칭이 지정된 키입니다. # 키. 다음에서 해당 이름을 다시 이름으로 변환할 수 있습니다. # aliased_associations 해시. 별칭 = meth 만약 방식 && a = 방식.가져오기(meth, nil) 별칭 = a.to_s end 필드 = nil class = nil 만약 fs && f = fs[별칭] 필드 = f yield(meth, f, true) 만약 block_given? elsif rs && rel = rs[별칭] class = rel.class yield(meth, rel, 거짓) 만약 block_given? other yield(meth, nil, 거짓) 만약 block_given? end end 필드 end |
인스턴스 메서드 세부 정보
#apply_default(name) ⇒ 객체
지정된 이름에 단일 기본값 을 적용합니다.
178 179 180 181 182 183 184 185 186 187 188 |
# 파일 'lib/mongoid/fields.rb', 178줄 def apply_default(이름) 하지 않는 한 속성.키?(이름) 만약 필드 = 필드[이름] 기본 = 필드.eval_default(self) 하지 않는 한 기본.nil? || 필드.게으른가요? attribute_write_change!(이름) 속성[이름] = 기본 end end end end |
#apply_defaults ⇒ 객체
모든 기본값을 한 번에 적용합니다.
194 195 196 197 198 |
# 파일 'lib/mongoid/fields.rb', 194줄 def apply_defaults 보류 중인_콜백.삭제(:apply_defaults) apply_pre_processed_defaults apply_post_processed_defaults end |
#apply_post_processed_defaults ⇒ Array<String>
문서 에 기본값인 모든 기본값 을 적용합니다.
165 166 167 168 169 170 |
# 파일 'lib/mongoid/fields.rb', 165줄 def apply_post_processed_defaults 보류 중인_콜백.삭제(:apply_post_processed_defaults) post_processed_defaults.각 do |이름| apply_default(이름) end end |
#apply_pre_processed_defaults ⇒ Array<String>
절차가 아닌 문서에 모든 기본값을 적용합니다.
153 154 155 156 157 |
# 파일 'lib/mongoid/fields.rb', 153줄 def apply_pre_processed_defaults pre_processed_defaults.각 do |이름| apply_default(이름) end end |
#attribute_names ⇒ Array<String>
이 객체 에서 사용할 수 있는 속성의 이름 배열 을 반환합니다.
ORM에 구애받지 않는 방식으로 필드 이름을 제공합니다. Rails v3.1+ 은(는) 이 메서드를 사용하여 JSON 요청에서 매개변수를 자동으로 래핑합니다.
209 210 211 |
# 파일 'lib/mongoid/fields.rb', 209줄 def attribute_names self.클래스.attribute_names end |
#database_field_name(name) ⇒ string
데이터베이스에 저장되는 제공된 필드의 이름을 가져옵니다. 필드의 별칭 지정 여부를 결정하는 데 사용됩니다.
222 223 224 |
# 파일 'lib/mongoid/fields.rb', 222줄 def database_field_name(이름) self.클래스.database_field_name(이름) end |
#dot_dollar_field?(name) ⇒ true | false
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 필드 가 달러 기호($)로 시작하거나 점/마침표(.)를 포함하나요?
258 259 260 261 |
# 파일 'lib/mongoid/fields.rb', 258줄 def dot_dollar_field?(이름) n = aliased_fields[이름] || 이름 필드.키?(n) && (n.포함?('.') || n.start_with?('$')) end |
#Lazy_settable?(필드, 값) ⇒ true | false
제공된 필드 가 지연 평가인가요?
235 236 237 |
# 파일 'lib/mongoid/fields.rb', 235줄 def 지연 설정?(필드, value) !동결? && value.nil? && 필드.게으른가요? end |
#using_object_ids? ⇒ true | false
클래스 로드 성능을 위해 위임을 사용하지 않도록 리팩터링했습니다.
문서 에서 객체 ID를 사용하고 있나요?
247 248 249 |
# 파일 'lib/mongoid/fields.rb', 247줄 def using_object_ids? self.클래스.using_object_ids? end |
#validate_writeable_field_name!(name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
필드 가 달러 기호($)로 시작하는지 또는 점/마침표(.)를 포함하는지 확인합니다.
271 272 273 274 275 |
# 파일 'lib/mongoid/fields.rb', 271줄 def validate_writeable_field_name!(이름) 만약 dot_dollar_field?(이름) 올리다 오류::InvalidDotDollarAssignment.신규(self.클래스, 이름) end end |