[ruby-on-rails] Rails 4 : before_filter와 before_action

레일> 4.0.0 생성기와 CRUD 작업을 생성 before_action하지 before_filter. 같은 일을하는 것 같습니다. 이 둘의 차이점은 무엇입니까?



답변

우리가 할 수있는 ActionController::Base, before_action단지 인 새 구문 에 대한 before_filter.

그러나 모든 before_filters구문 Rails 5.0 에서 더 이상 사용되지 않으며 Rails 5.1 에서 제거됩니다.


답변

그것은 단지 구문 차이이며, rails 앱에는 CRUD가 있으며 기본적으로 name index , new , create , show , update , edit , destroy로 7 가지 작업이 있습니다 .

Rails 4를 사용하면 개발자가 필터 구문 을 액션 으로 변경할 수 있습니다 .

before_action 다음 과 같이 선언 한 동작 이전에 메소드를 호출합니다.

before_action :set_event, only: [:show, :update, :destroy, :edit]

set_event 는 show, update, edit 및 destroy 전에 항상 호출하는 메소드입니다.


답변

이름 변경 일뿐입니다. before_action액션 전에 실행되기 때문에 더 구체적입니다.


답변

before_filter / before_action : 액션이 실행되기 전에 실행될 것을 의미합니다.

둘 다 동일합니다. 그들의 행동이 동일하기 때문에 그들은 서로 별명입니다.


답변

before_action과 before_filter의 차이점을 파악하려면 action과 filter의 차이점을 이해해야합니다.

동작은 라우팅 할 수있는 컨트롤러의 방법입니다. 예를 들어, 사용자 작성 페이지가 UsersController # new로 라우트 될 수 있습니다. new는이 라우트의 조치입니다.

필터는 컨트롤러 동작과 관련하여 전, 후 또는 주변에서 실행됩니다. 이러한 메소드는 공통 데이터를 컨트롤러의 모든 조치로 경로 재 지정하거나 설정하여 조치 처리를 중지 할 수 있습니다.

레일 4 –> _action

레일 3 –> _filter


답변