# prevent non-staff from changing category on a topic
PostRevisor.track_topic_field(:category_id) do |tc, category_id|
if tc.guardian.is_staff?
tc.record_change('category_id', tc.topic.category_id, category_id)
tc.topic.category_id = category_id
else
tc.topic.errors[:base] << "you can't change category on a this kind of topic"
end
end
이 코드는 비스태프가 카테고리를 변경하는 것을 방지하지만, 에러가 버블 업(bubble up)되지 않습니다.
이 부분은 제가 당신보다 잘하는 것 같습니다. 하지만 Rails가 이를 다시 전달할 필요가 없다고 생각합니다. Ember는 사용자가 선택할 수 없는 카테고리를 선택하지 못하도록 막을 것으로 기대하기 때문입니다. 따라서, 사용자가 변경할 수 없는 카테고리인 경우 프론트엔드에서 카테고리 변경을 막아 PostRevisor가 이러한 불편한 상황에 직면하지 않도록 하는 것이 어떨까요?
저도 같은 현상을 겪었고, 원인을 찾지 못해 막막했습니다. 아직 프론트엔드가 없어서 모든 개발과 테스트를 API 요청으로 하고 있었는데, 성공처럼 보이는 응답을 받자 당황했습니다. 가드(guard)가 아예 작동하지 않는 줄 알고 최소한의 디버거를 짜서 스테퍼를 통해 겨우 디버깅을 진행했습니다.
수정:
음… 환경을 완전히 재시작해 봤더니 API 응답에 오류 메시지가 반환되기 시작했습니다.