Rails 4 : before_filter와 before_action


답변:


521

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

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


42
한편으로는 더 이상 사용되지 않는 것이 의미가 있지만 다른 한편으로는 레일과 루비에서 한 가지 방법에 여러 별칭을 사용하여 의미를 잃지 않고 다른 컨텍스트에서 사용할 수있는 좋은 방법이 있습니다.
freemanoid

4
4.2에서 그들은 더 이상 사용되지 않고 문서화되지 않기 때문에 문서에서 제거합니다. edgeguides.rubyonrails.org/…
onetwopunch

17
이 낙심 있다면, 왜 않을 것이다 당신은 그것을 더 이상 사용? 바보.
Grant Birchmeier

4
@JohnWhitley-지원 중단으로 인해 API가 중단되지 않습니다. 이것이 더 이상 사용되지 않습니다.
Grant Birchmeier

9
@JohnWhitley-스팸은 이유가 있습니다. 잘 훈련 된 프로젝트는 더 이상 사용되지 않는 기능을 사용하지 않아 사용 중단 경고를 처리해야 합니다 .
그랜트 버치 마이어

67

그것은 단지 구문 차이이며, 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 전에 항상 호출하는 메소드입니다.


31

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


1

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

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


-3

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

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

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

레일 4 –> _action

레일 3 –> _filter

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.