모듈: Mongoid::Fields::ClassMethods

다음에 정의됨:
lib/mongoid/fields.rb,
lib/mongoid/fields.rb

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#attribute_namesArray<String>

이 객체 에서 사용할 수 있는 속성의 이름 배열 을 반환합니다.

ORM에 구애받지 않는 방식으로 필드 이름을 제공합니다. Rails v3.1+ 은(는) 이 메서드를 사용하여 JSON 요청에서 매개변수를 자동으로 래핑합니다.

예시:

필드 이름 가져오기

Model.attribute_names

반환합니다:

  • (Array<String>)

    필드 이름



454
455
456
# 파일 'lib/mongoid/fields.rb', 454줄

def attribute_names
  필드.
end

#clean_localized_field_names(name) ⇒ 필드

지정된 필드 이름에서 _translations를 제거합니다. 이 작업은 동일한 이름(예: 접미사 _translations 포함)을 가진 필드 이름 또는 관계가 아직 존재하지 않는 경우에만 수행됩니다. 기존 필드 에 대한 이 검사는 재귀적으로 수행됩니다.

매개변수:

  • 이름 (string | 기호)

    정리할 필드 의 이름입니다.

반환합니다:

  • (필드)

    _translations가 없는 필드 이름



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
125
126
# 파일 'lib/mongoid/fields.rb', 100줄

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

데이터베이스에 저장되는 제공된 필드의 이름을 가져옵니다. 필드의 별칭 지정 여부를 결정하는 데 사용됩니다.

매개변수:

  • 이름 (string | 기호)

    가져올 이름입니다.

반환합니다:

  • (string)

    db에 저장되는 필드 의 이름입니다.



464
465
466
# 파일 'lib/mongoid/fields.rb', 464줄

def database_field_name(이름)
  필드.database_field_name(이름, 관계, aliased_fields, aliased_associations)
end

#extract_id_field(attributes) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 클래스에 정의된 별칭을 기반으로 지정된 속성 해시에서 ID 필드 를 추출합니다.

매개변수:

  • 속성 (해시)

    검사할 속성입니다.

반환합니다:

  • (객체)

    ID 값입니다.



83
84
85
86
87
88
89
90
# 파일 'lib/mongoid/fields.rb', 83줄

def extract_id_field(속성)
  id_fields. do |k|
    만약 v = 속성[k]
      반환 v
    end
  end
  nil
end

필드 #필드(이름, 옵션 = {}) ⇒ 필드

문서에서 액세스할 수 있는 모든 필드를 정의합니다. 정의된 각 필드 에 대해 getter 및 setter가 문서의 인스턴스 메서드로 추가됩니다.

예시:

필드 를 정의합니다.

field :score, type: Integer, default: 0

매개변수:

  • 이름 (기호)

    필드의 이름입니다.

  • 옵션 (해시) (기본값: {})

    필드 에 전달할 옵션입니다.

옵션 해시(options):

  • :type (클래스 | 기호 | string)

    필드 의 유형입니다.

  • :label (string)

    필드의 레이블입니다.

  • :default (Object | Proc)

    필드의 기본값.

반환합니다:

  • (필드)

    생성된 필드



483
484
485
486
487
488
489
490
491
# 파일 'lib/mongoid/fields.rb', 483줄

def 필드(이름, 옵션 = {})
  명명된 = 이름.to_s
  유효성 검사기::매크로.유효성 검사(self, 이름, 옵션)
  추가됨 = add_field(명명된, 옵션)
  descendants. do |하위 클래스|
    하위 클래스.add_field(명명된, 옵션)
  end
  추가됨
end

#id_fieldsArray<Symbol | string>

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 모델 클래스의 ID 필드 목록을 문자열과 기호로 반환합니다.

반환합니다:

  • (Array<Symbol | string>)

    ID 필드 목록입니다.



64
65
66
67
68
69
70
71
72
73
# 파일 'lib/mongoid/fields.rb', 64줄

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) ⇒ 직렬화 가능

필드 를 새 유형으로 바꿉니다.

예시:

필드 를 바꿉니다.

Model.replace_field("_id", String)

매개변수:

  • 이름 (string)

    필드의 이름입니다.

  • 유형 (클래스)

    새로운 유형의 필드 입니다.

반환합니다:



502
503
504
505
# 파일 'lib/mongoid/fields.rb', 502줄

def replace_field(이름, 유형)
  remove_defaults(이름)
  add_field(이름, 필드[이름].옵션.merge(유형: 유형))
end

#traverse_association_tree(key) {|The, When| ... } ⇒ 필드

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

연관 트리를 아래로 이동하여 주어진 키에 대한 필드 를 검색 합니다.

매개변수:

  • (string)

    연관 트리를 검색 하는 데 사용되는 키입니다.

  • &block

    차단.

수율 매개변수:

  • (기호)

    현재 메서드.

  • (기호 | string)

    필드 또는 관계.

  • 여부 (true | false)

    두 번째 yield 매개변수가 필드 인지 여부입니다.

반환합니다:

  • (필드)

    검색 이 끝날 때 지정된 키에 대해 발견된 필드 입니다. 마지막으로 발견된 것이 연관 관계이거나 주어진 키에 대한 필드 가 없는 경우 nil을 반환합니다.



533
534
535
# 파일 'lib/mongoid/fields.rb', 533줄

def traverse_association_tree(, &차단)
  필드.traverse_association_tree(, 필드, 관계, aliased_associations, &차단)
end

#using_object_ids?true | false

BSON::ObjectIds 을 ID로 사용하고 있는지 여부를 확인할 수 있는 편리한 메서드입니다.

예시:

이 클래스는 객체 ID를 사용하나요?

person.using_object_ids?

반환합니다:

  • (true | false)

    클래스가 ID에 BSON::ObjectIds를 사용하는 경우.



514
515
516
# 파일 'lib/mongoid/fields.rb', 514줄

def using_object_ids?
  필드["_id"].object_id_field?
end