클래스: Mongoid::Fields::ForeignKey
개요
다른 문서 의 ID 를 참조하는 외래 키를 저장하는 BSON 문서 필드 정의를 나타냅니다. 연관 관계 동작에 사용됩니다.
인스턴스 속성 요약
Standard에서 상속된 속성
#default_val, #label, #name, #options
인스턴스 메서드 요약 접기
-
#add_atomic_changes(문서, name, key, mods, new_elements, old_elements) ⇒ Object
이 유형의 크기 조정 가능한 필드에 대한 원자적 변경 사항을 추가합니다.
-
#진화(객체) ⇒ 객체
객체 를 ID 호환 객체 로 진화시킵니다.
-
#foreign_key? ⇒ true | false
이 필드가 외래 키입니까?
-
#게으르다? ⇒ true | false
이 필드 는 지연 기본값 평가를 수행하나요?
-
#mongoize(객체) ⇒ 객체
객체를 mongo 친화적인 값으로 몽고화합니다.
-
#object_id_field? ⇒ true | false
필드 가 BSON::ObjectId입니까?
-
#크기 조정 가능? ⇒ true | false
배열 인 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
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: 리팩터링, 시간이 많이 걸립니다.
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 호환 객체 로 진화시킵니다.
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 .진화(객체) end end |
#foreign_key? ⇒ true | false
이 필드 가 외래 키입니까?
52 53 54 |
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 52 def foreign_key? true end |
#게으르다? ⇒ true | false
이 필드는 지연 기본 평가를 수행하나요?
84 85 86 |
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 84 def 게으른가요? 유형.크기 조정 가능? end |
#mongoize(객체) ⇒ 객체
객체를 mongo 친화적인 값으로 몽고화합니다.
96 97 98 99 100 101 102 |
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 96 def mongoize(객체) 만약 유형.크기 조정 가능? || object_id_field? mongoize_foreign_key(객체) other .mongoize(객체) end end |
#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 를 반환합니다.
121 122 123 |
# 파일 'lib/mongoid/fields/foreign_key.rb', 줄 121 def 크기 조정 가능? 유형.크기 조정 가능? end |