모듈: 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
# 파일 '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_name => self.send(연관 관계.inverse_type))
        end
        연관 관계.중첩된_빌더(attrs, 옵션).빌드(self)
      end
    end
  end
end