모듈: Mongoid::Attributes::Dynamic
- 확장자:
- ActiveSupport::Concern
- 다음에 정의됨:
- lib/mongoid/attributes/dynamic.rb
개요
이 모듈에는 동적 속성에 대한 동작이 포함되어 있습니다.
인스턴스 메서드 요약 접기
-
#describe_dynamic_before_type_cast_reader(name) ⇒ 객체
비공개
유형 캐스트 전에 동적 속성에 대한 판독기 메서드를 정의합니다.
-
#describe_dynamic_reader(name) ⇒ 객체
비공개
동적 속성에 대한 판독기 메서드를 정의합니다.
-
#describe_dynamic_writer(name) ⇒ 객체
비공개
동적 속성에 대한 작성기 메서드를 정의합니다.
-
#검사_동적_필드 ⇒ string
문서 에 대해 검사된 동적 필드의 배열 을 가져옵니다.
-
#메서드 누락(이름, *args) ⇒ 객체
비공개
동적 속성에 대한 접근자 메서드를 허용하는 데 사용됩니다.
-
#process_attribute(이름, 값) ⇒ 객체
속성이 동적인 경우 객체 유형으로 속성에 대한 필드를 추가하고 값을 설정합니다.
-
#respond_to?(name, include_private = false) ⇒ true | false
response_to를 재정의하시겠습니까? 동적 속성에 올바르게 응답합니다.
동적 메서드 처리
이 클래스는 메서드 누락 메서드를 통해 동적 메서드를 처리합니다.
#메서드 누락(이름, *args) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
동적 속성에 대한 접근자 메서드를 허용하는 데 사용됩니다.
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 122 def Method_missing(이름, *args) 속성 = 이름.to_s 반환 super 하지 않는 한 속성.has_key?(속성.리더) 만약 속성.작가? 게터 = 속성.리더 describe_dynamic_writer(게터) write_attribute(게터, args.first) elsif 속성.before_type_cast? describe_dynamic_before_type_cast_reader(속성.리더) attribute_write_change!(속성.리더) read_attribute_before_type_cast(속성.리더) other 게터 = 속성.리더 describe_dynamic_reader(게터) attribute_write_change!(속성.리더) read_raw_attribute(게터) end end |
인스턴스 메서드 세부 정보
#describe_dynamic_before_type_cast_reader(name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
유형 캐스트 전에 동적 속성에 대한 판독기 메서드를 정의합니다.
54 55 56 57 58 59 60 61 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 54 def describe_dynamic_before_type_cast_reader(이름) class_eval do 정의_메서드("#{name}_before_type_cast") do attribute_write_change!(이름) read_attribute_before_type_cast(이름) end end end |
#describe_dynamic_reader(name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
동적 속성에 대한 판독기 메서드를 정의합니다.
35 36 37 38 39 40 41 42 43 44 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 35 def describe_dynamic_reader(이름) 반환 하지 않는 한 이름.valid_method_name? class_eval do 정의_메서드(이름) do attribute_write_change!(이름) read_raw_attribute(이름) end end end |
#describe_dynamic_writer(name) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
동적 속성에 대한 작성기 메서드를 정의합니다.
71 72 73 74 75 76 77 78 79 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 71 def describe_dynamic_writer(이름) 반환 하지 않는 한 이름.valid_method_name? class_eval do 정의_메서드("#{name}=") do |value| write_attribute(이름, value) end end end |
#검사_동적_필드 ⇒ string
문서 에 대해 검사된 동적 필드의 배열 을 가져옵니다.
104 105 106 107 108 109 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 104 def Inspect_dynamic_fields 키 = 속성.키 - 필드.키 - 관계.키 - ["_id", self.클래스.판별자_키] 반환 키.map do |이름| "#{name}: #{attributes[name].검사}" end end |
#process_attribute(이름, 값) ⇒ 객체
속성이 동적인 경우 객체 유형으로 속성에 대한 필드를 추가하고 값을 설정합니다.
89 90 91 92 93 94 95 96 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 89 def process_attribute(이름, value) 응답 = response_to?("#{name}=") 만약 !응답 write_attribute(이름, value) other send("#{name}=", value) end end |
#respond_to?(name, include_private = false) ⇒ true | false
response_to를 재정의하시겠습니까? 동적 속성에 올바르게 응답합니다.
20 21 22 23 24 25 |
# 파일 'lib/mongoid/attributes/dynamic.rb', 줄 20 def response_to?(이름, include_private = 거짓) super || ( 속성 && 속성.has_key?(이름.to_s.리더) ) end |