모듈: Mongoid::Attributes::Nested::ClassMethods

다음에 정의됨:
lib/mongoid/attributes/nested.rb

상수 요약 접기

REJECT_ALL_BLANK_PROC =
->(속성){
  속성.모두? { |, value|  == '_destory' || value.비어 있나요? }
}

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#accepts_nested_attributes_for(*args) ⇒ 객체

상위 연관 관계에서 관련 모델을 업데이트 해야 할 때 사용됩니다. 포함 또는 참조된 연관 관계에 사용할 수 있습니다.

예시:

중첩된 속성 정의.


class Person
  include Mongoid::Document

  embeds_many :addresses
  embeds_one :game
  references_many :posts

  accepts_nested_attributes_for :addresses, :game, :posts
end

매개변수:

  • *args (기호..., 해시)

    연결 이름 목록과 옵션의 선택적 해시가 뒤따릅니다.

[소스 보기]

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 파일 'lib/mongoid/attributes/nested.rb', 줄 48

def accepts_nested_attributes_for(*args)
  옵션 = args.extract_options!.dup
  옵션[:autosave] = true 만약 옵션[:autosave].nil?

  옵션[:reject_if] = REJECT_ALL_BLANK_PROC 만약 옵션[:reject_if] == :all_blank
  args. do |이름|
    meth = "#{name}_attributes="
    self.중첩된_속성["#{name}_attributes"] = meth
    연관 관계 = 관계[이름.to_s]
    올리다 오류::중첩된 속성MetadataNotFound.신규(self, 이름) 하지 않는 한 연관 관계
    autosave_nested_attributes(연관 관계) 만약 옵션[:autosave]

    re_define_method(meth) do |attrs|
      _assigning do
        만약 연관 관계.다형성? 개인정보 정책에 연관 관계.inverse_type
          class = 연관 관계.리졸버.Model_for(send(연관 관계.inverse_type))
          옵션 = 옵션.병합!(:class_name => class)
        end
        연관 관계.중첩된_빌더(attrs, 옵션).빌드(self)
      end
    end
  end
end