클래스: Mongoid::Fields::ForeignKey

상속:
스탠다드 모두 표시
다음에 정의됨:
lib/mongoid/fields/foreign_key.rb

개요

다른 문서 의 ID 를 참조하는 외래 키를 저장하는 BSON 문서 필드 정의를 나타냅니다. 연관 관계 동작에 사용됩니다.

인스턴스 속성 요약

Standard에서 상속된 속성

#default_val, #label, #name, #options

인스턴스 메서드 요약 접기

Standard에서 상속된 메서드

#association, #eval_default, #initialize, #localize_present?, #localized?, #pre_processed?, #type

생성자 세부 정보

이 클래스는 Mongoid::Fields::Standard의 생성자를 상속합니다.

인스턴스 메서드 세부 정보

#add_atomic_changes(문서, name, key, mods, new_elements, old_elements) ⇒ Object

이 유형의 크기 조정 가능한 필드에 대한 원자적 변경 사항을 추가합니다.

@todo: 리팩터링, 시간이 많이 걸립니다.

예시:

원자적 변경 사항을 추가합니다.

field.add_atomic_changes(doc, "key", {}, [], [])

매개변수:

  • 문서 (문서)

    추가할 문서입니다.

  • 이름 (string)

    필드의 이름입니다.

  • (string)

    필드의 원자 위치입니다.

  • mods (해시)

    현재 수정 사항.

  • new_elements (배열)

    추가할 새 요소입니다.

  • old_elements (배열)

    오래된 요소가 제거되고 있습니다.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 25

def add_atomic_changes(문서, 이름, , mods, new_elements, old_elements)
  old = (old_elements || [])
  신규 = (new_elements || [])
  만약 신규.분량 > old.분량
    만약 신규.first(old.분량) == old
      문서.atomic_array_add_to_sets[] = 신규.제거(old.분량)
    other
      mods[] = 문서.속성[이름]
    end
  elsif 신규.분량 < old.분량
    pulls = old - 신규
    만약 신규 == old - pulls
      문서.atomic_array_pulls[] = pulls
    other
      mods[] = 문서.속성[이름]
    end
  elsif 신규 != old
    mods[] = 문서.속성[이름]
  end
end

#진화(객체) ⇒ 객체

객체 를 ID 호환 객체 로 진화시킵니다.

예시:

객체 를 진화시킵니다.

field.evolve(object)

매개변수:

  • 객체 (객체)

    진화할 객체입니다.

반환합니다:

  • (객체)

    진화된 객체입니다.



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

def 진화(객체)
  만약 object_id_field? || 객체.is_a?(문서)
    만약 연관 관계.다형성?
      연관 관계.convert_to_foreign_key(객체)
    elsif 객체.is_a?(문서) && 객체.response_to?(연관 관계.Primary_key)
      primary_key_field.진화(객체.send(연관 관계.Primary_key))
    other
      객체.__evolve_object_id__
    end
  other
    related_id_field.진화(객체)
  end
end

#foreign_key?true | false

이 필드 가 외래 키입니까?

예시:

필드가 외래 키인가요?

field.foreign_key?

반환합니다:

  • (true | false)

    필드 가 외래 키인 경우.



52
53
54
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 52

def foreign_key?
  true
end

#게으르다?true | false

이 필드는 지연 기본 평가를 수행하나요?

예시:

필드 가 게으른가요?

field.lazy?

반환합니다:

  • (true | false)

    필드가 지연된 경우.



84
85
86
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 84

def 게으른가요?
  유형.크기 조정 가능?
end

#mongoize(객체) ⇒ 객체

객체를 mongo 친화적인 값으로 몽고화합니다.

예시:

객체를 몽고화합니다.

field.mongoize(object)

매개변수:

  • 객체 (객체)

    Mongoize의 객체입니다.

반환합니다:

  • (객체)

    mongoized 객체 입니다.



96
97
98
99
100
101
102
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 96

def mongoize(객체)
  만약 유형.크기 조정 가능? || object_id_field?
    mongoize_foreign_key(객체)
  other
    related_id_field.mongoize(객체)
  end
end

#object_id_field?true | false

필드가 BSON::ObjectId입니까?

예시:

필드가 BSON::ObjectId입니까?

field.object_id_field?

반환합니다:

  • (true | false)

    필드 가 BSON::ObjectId인 경우.



110
111
112
113
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 110

def object_id_field?
  @object_id_field ||=
      연관 관계.다형성? ? true : 연관 관계.class.using_object_ids?
end

#크기 조정 가능?true | false

배열 인 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

예시:

필드 의 크기를 조정할 수 있나요?

field.resizable?

반환합니다:

  • (true | false)

    필드의 크기를 조정할 수 있는 경우.



121
122
123
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 121

def 크기 조정 가능?
  유형.크기 조정 가능?
end