모듈: Mongoid::Fields::ClassMethods
- 다음에 정의됨:
- lib/mongoid/fields.rb,
lib/mongoid/fields.rb
인스턴스 메서드 요약 접기
-
#attribute_names ⇒ Array<String>
이 객체 에서 사용할 수 있는 속성의 이름 배열 을 반환합니다.
-
#auto_embed_field(name, 모델: 'voyage-4 ', num_dimensions: nil, 양자화: nil, 유사도: nil, 인덱스: nil) ⇒ 객체
텍스트 필드 선언하고 자동 임베딩(autoEmbed) 유형을 사용하여 텍스트 필드에 해당하는 Atlas Vector Search 인덱스 등록합니다.
-
#clean_localized_field_names(name) ⇒ 필드
지정된 필드 이름에서 _translations를 제거합니다.
-
#database_field_name(name) ⇒ string
데이터베이스 에 저장된 제공된 필드 의 이름을 가져옵니다.
-
#extract_id_field(attributes) ⇒ 객체
비공개
이 클래스에 정의된 별칭을 기반으로 지정된 속성 해시에서 ID 필드 를 추출합니다.
-
#필드(이름, 옵션 = {}) ⇒ 필드
문서에서 액세스할 수 있는 모든 필드를 정의합니다. 정의된 각 필드 에 대해 getter 및 setter가 문서의 인스턴스 메서드로 추가됩니다.
-
#id_fields ⇒ Array<Symbol | string>
비공개
이 모델 클래스의 ID 필드 목록을 문자열과 기호로 반환합니다.
-
#replace_field(name, type) ⇒ 직렬화 가능
필드 를 새 유형으로 바꿉니다.
-
#traverse_association_tree(key) {|The, When| ... } ⇒ 필드
비공개
연관 트리를 아래로 이동하여 주어진 키에 대한 필드 를 검색 합니다.
-
#using_object_ids? ⇒ true | false
BSON::ObjectIds을 ID로 사용하고 있는지 여부를 확인할 수 있는 편리한 메서드입니다. -
#vector_field(이름, 차원:, 유사도: '코사인', 인덱스: nil) ⇒ 객체
벡터 임베딩 필드 선언하고 이에 해당하는 Atlas Vector Search 인덱스 한 번에 등록합니다.
인스턴스 메서드 세부 정보
#attribute_names ⇒ Array<String>
이 객체 에서 사용할 수 있는 속성의 이름 배열 을 반환합니다.
ORM에 구애받지 않는 방식으로 필드 이름을 제공합니다. Rails v3.1+ 은(는) 이 메서드를 사용하여 JSON 요청에서 매개변수를 자동으로 래핑합니다.
449 450 451 |
# 파일 'lib/mongoid/fields.rb', 449줄 def attribute_names 필드.키 end |
#auto_embed_field(name, 모델: 'voyage-4 ', num_dimensions: nil, 양자화: nil, 유사도: nil, 인덱스: nil) ⇒ 객체
텍스트 필드 선언하고 자동 임베딩(autoEmbed) 유형을 사용하여 텍스트 필드에 해당하는 Atlas Vector Search 인덱스 등록합니다. Atlas 인덱스 및 쿼리 시점에 임베딩을 자동으로 생성합니다. 미리 계산된 벡터가 필요하지 않습니다.
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 |
# 파일 'lib/mongoid/fields.rb', 542줄 def (이름, model: 'voyage-4', num_dimensions: nil, 양자화: nil, 유사성: nil, index: nil) 필드(이름, 유형: 문자열) field_spec = { 유형: 'autoEmbed', 모달리티: 'text', 경로: 이름.to_s, model: 모델 } field_spec[:num차원] = num_dimensions 만약 num_dimensions field_spec[:quantization] = 양자화 만약 양자화 field_spec[:유사성] = 유사성 만약 유사성 만약 index vector_search_index(index, 필드: [ field_spec ]) other vector_search_index(필드: [ field_spec ]) end end |
#clean_localized_field_names(name) ⇒ 필드
지정된 필드 이름에서 _translations를 제거합니다. 이 작업은 동일한 이름(예: 접미사 _translations 포함)을 가진 필드 이름 또는 관계가 아직 존재하지 않는 경우에만 수행됩니다. 기존 필드 에 대한 이 검사는 재귀적으로 수행됩니다.
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 124 |
# 파일 'lib/mongoid/fields.rb', 98줄 def Clean_localized_field_names(이름) 이름 = database_field_name(이름.to_s) class = self [].탭 do |res| ar = 이름.split('.') ar.each_with_index do |fn, i| 키 = fn 하지 않는 한 class.필드.키?(fn) || class.관계.키?(fn) 키 = 만약 fn.end_with?(TRANSLATIONS_SFX) fn.delete_suffix(TRANSLATIONS_SFX) other fn end end res.push(키) 만약 class.필드.키?(fn) res.push(ar.제거(i + 1).가입('.')) 하지 않는 한 i == ar.분량 - 1 휴식 elsif class.관계.키?(fn) class = class.관계[키].class end end end.가입('.') end |
#database_field_name(name) ⇒ string
데이터베이스에 저장되는 제공된 필드의 이름을 가져옵니다. 필드의 별칭 지정 여부를 결정하는 데 사용됩니다.
459 460 461 |
# 파일 'lib/mongoid/fields.rb', 459줄 def database_field_name(이름) 필드.database_field_name(이름, 관계, aliased_fields, aliased_associations) end |
#extract_id_field(attributes) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 클래스에 정의된 별칭을 기반으로 지정된 속성 해시에서 ID 필드 를 추출합니다.
81 82 83 84 85 86 87 88 |
# 파일 'lib/mongoid/fields.rb', 81줄 def extract_id_field(속성) id_fields.각 do |k| 만약 v = 속성[k] 반환 v end end nil end |
필드 #필드(이름, 옵션 = {}) ⇒ 필드
문서에서 액세스할 수 있는 모든 필드를 정의합니다. 정의된 각 필드 에 대해 getter 및 setter가 문서의 인스턴스 메서드로 추가됩니다.
577 578 579 580 581 582 583 584 585 |
# 파일 'lib/mongoid/fields.rb', 577줄 def 필드(이름, = {}) 명명된 = 이름.to_s 유효성 검사기::매크로.유효성 검사(self, 이름, ) 추가됨 = add_field(명명된, ) descendants.각 do |하위 클래스| 하위 클래스.add_field(명명된, ) end 추가됨 end |
#id_fields ⇒ Array<Symbol | string>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 모델 클래스의 ID 필드 목록을 문자열과 기호로 반환합니다.
62 63 64 65 66 67 68 69 70 71 |
# 파일 'lib/mongoid/fields.rb', 62줄 def id_fields IDS.dup.탭 do |id_fields| aliased_fields.각 do |k, v| 만약 v == '_id' id_fields << k.to_sym id_fields << k end end end end |
#replace_field(name, type) ⇒ 직렬화 가능
필드 를 새 유형으로 바꿉니다.
596 597 598 599 |
# 파일 'lib/mongoid/fields.rb', 596줄 def replace_field(이름, 유형) remove_defaults(이름) add_field(이름, 필드[이름]..merge(유형: 유형)) end |
#traverse_association_tree(key) {|The, When| ... } ⇒ 필드
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
연관 트리를 아래로 이동하여 주어진 키에 대한 필드 를 검색 합니다.
627 628 629 |
# 파일 'lib/mongoid/fields.rb', 627줄 def traverse_association_tree(키, &차단) 필드.traverse_association_tree(키, 필드, 관계, aliased_associations, &차단) end |
#using_object_ids? ⇒ true | false
BSON::ObjectIds 을 ID로 사용하고 있는지 여부를 확인할 수 있는 편리한 메서드입니다.
608 609 610 |
# 파일 'lib/mongoid/fields.rb', 608줄 def using_object_ids? 필드['_id'].object_id_field? end |
#vector_field(이름, 차원:, 유사도: '코사인', 인덱스: nil) ⇒ 객체
벡터 임베딩 필드 선언하고 이에 해당하는 Atlas Vector Search 인덱스 한 번에 등록합니다.
필드 배열로 저장됩니다. 고급 인덱스 옵션(양자화, 인덱싱 방법, HNSW 조정)의 경우 명시적 field + vector_search_index 조합을 대신 사용합니다.
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 |
# 파일 'lib/mongoid/fields.rb', 490줄 def vector_field(이름, 차원:, 유사성: 'cosine', index: nil) 필드(이름, 유형: 배열) field_spec = { 유형: 'vector ', 경로: 이름.to_s, num차원: 차원, 유사성: 유사성 } 만약 index vector_search_index(index, 필드: [ field_spec ]) other vector_search_index(필드: [ field_spec ]) end end |