조건이 true가되면 테이블의 필드를 업데이트하는 방법을 알아 내려고했습니다.데이터베이스에 저장 한 후 조건이 유효한지 확인한 후 작업 실행 - 레일
내 사이트는 두 개의 어레이를 비교하여 운동이 완료되었는지 확인합니다. completedExercises 배열의 totalExercisesInWorkout 배열과 동일한 workout_id가 있으면 true로 되돌아옵니다. 내가 사실이되면 사용자에게 새로운 workout_id
을 할당하려고합니다.
after_save
콜백이 같은 뭔가 생각 :
문제는, 내가 전화 한 인스턴스 변수가있는
application_controller
에 정의되어있다
after_save :is_workout_complete?
protected
def is_workout_complete?
if @totalExercisesInWorkout.included_in?(@completedExercises) == true
current_user.workout_id = @workout.next_workout_id
end
end
initialize_vars
메소드는 여기에서 액세스 할 수 없습니다.
다른 인스턴스 변수를 다른 곳에 정의해야합니까? 두 개가 필요합니다.
마지막 연습 문제가 완료되었는지 확인한 다음 사용자에게 조치를 취하는 가장 좋은 방법입니까?
전체 블록이 컨트롤러에 속한 것으로 보입니다. 모델에는'current_user'가 없습니다. –
컨트롤러에서 after_save가 작동하지 않는다고 생각합니다. ApplicationController에 대한 정의되지 않은 메소드'after_save ': Class' – Arel
예, 메소드의 본문을 의미합니다. 어떻게 부를까요? 그것이 진짜 질문입니다. –