1

내 앱에서 하나의 예약에 많은 승객이있는 예약 및 승객이 있습니다. 내가 가진 내 예약 모델 있도록레일 5에서 after_create 메소드의 하위 항목에 액세스 할 수 없습니다.

새로운 예약을 만든 후 나는 모든 승객에게 통지를 전송하려면 :

after_create :send_notification 

def send_notification 
    self.passengers.each do |passenger| 
    #DO STUFF 
    end 
end 

이 아무것도하지 않고 나는

puts(self.passengers.count) 

을 시도하는 경우 그것은 012를 반환합니다.

내가 사용자 after_save 일을 할 때, 나는 그것이 부모를 만들었지 만 아직 아이들을 만들지 않았다고 가정합니다.

after_save 문제는 업데이트 후에도이 트리거가 사용되기 때문입니다.

아이디어가 있으십니까?

답변

1

당신은 after_save에 대한 조건을 추가 할 수 있습니다

after_save :send_notification, if: :id_changed? 
# or :id_previously_changed? I don't remember if in after_save you can access dirty attributes 
0
이에 콜백을 변경

:

콜백 절약 대신 객체를 생성 한 후 발사 있도록
after_save :send_notification, on: :create 

하지만 것이다 처음 생성 될 때 발생합니다.