Devise 코드를 살펴본 결과 대부분의 컨트롤러가 리소스를 생성한다는 사실을 알았습니다.Devise 컨트롤러에서 'yield resource'는 무엇을합니까?
class Devise::RegistrationsController < DeviseController
# ...
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
# ...
이것은 일종의 확장 기능이어야하지만 실제로 컨트롤러 동작에 블록을 전달하는 방법을 모르겠습니까?
참고 :이 질문은 Ruby의 블록이 작동하는 방식이 아니라 Rails 요청주기에서 실제로 수행하는 방법에 대한 것입니다.
http://mudge.name/2011/01/26/passing-blocks-in-ruby-without-block.html – Jonathan
@ 조나단 오른쪽 있지만, 여전히 블록을'Devise :: RegistrationsController # create'에 전달하는 방법을 설명하지 않습니다. AFAIK 그것은 라우터에 의해 호출됩니다. – max
실수가 아닌 경우 Ruby의 모든 메소드에 블록을 전달할 수 있습니다. 그냥 시도 해 봐. 마지막 인수 인 한 – Jonathan