Docs Menu
Docs Home
/ / /
몽고이드
/

콜백

이 페이지의 내용

  • 문서 콜백
  • 연관 관계 콜백

Mongoid는 여러 ActiveRecord 콜백 를 구현합니다. .

Mongoid는 문서에 대해 다음 콜백을 지원합니다.

  • after_initialize

  • after_build

  • before_validation

  • after_validation

  • before_create

  • around_create

  • after_create

  • after_find

  • before_update

  • around_update

  • after_update

  • before_upsert

  • around_upsert

  • after_upsert

  • before_save

  • around_save

  • after_save

  • before_destroy

  • around_destroy

  • after_destroy

콜백은 다른 문서 내에 임베딩되었는지 여부에 관계없이 모든 문서 에서 사용할 수 있습니다. Mongoid는 효율성을 위해 지속성 조치 이 실행된 문서 에서만 콜백 을 호출한다는 점에 유의하세요. 이를 통해 Mongoid는 대규모 계층 구조를 지원 하고 최적화된 원자성 업데이트를 효율적으로 처리하다 할 수 있습니다( 문서 계층 구조 전체에서 콜백을 호출하지 않고도).

도메인 로직에 콜백을 사용하는 것은 잘못된 설계 관행이며, 체인의 콜백이 실행을 중단하면 디버깅하기 어려운 예기치 않은 오류가 발생할 수 있습니다. 배경 작업을 대기열에 추가하는 등 교차 문제가 있는 경우에만 사용하는 것이 좋습니다.

class Article
include Mongoid::Document
field :name, type: String
field :body, type: String
field :slug, type: String
before_create :send_message
after_save do |document|
# Handle callback here.
end
protected
def send_message
# Message sending code here.
end
end

콜백은 Active Support에서 제공되므로 새로운 구문을 사용할 수도 있습니다.

class Article
include Mongoid::Document
field :name, type: String
set_callback(:create, :before) do |document|
# Message sending code here.
end
end

Mongoid에는 연관 관계에 특정한 콜백 세트가 있습니다.

  • after_add

  • after_remove

  • before_add

  • before_remove

문서가 다음 연결에서 추가되거나 제거될 때마다 해당 콜백이 호출됩니다: embeds_many, has_manyhas_and_belongs_to_many.

연관 관계 콜백은 각 연관 관계의 옵션으로 지정됩니다. 추가/제거된 문서 는 지정된 콜백 에 매개변수로 전달됩니다. 예시:

class Person
include Mongoid::Document
has_many :posts, after_add: :send_email_to_subscribers
end
def send_email_to_subscribers(post)
Notifications.new_post(post).deliver
end

돌아가기

중첩된 속성

이 페이지의 내용