Вызов super не решит вашу проблему, потому что вы хотите изменить внутреннюю работу метода, а не передавать новые параметры или добавить к нему код.
Я бы создал третью функцию(давайте назовем это common_routine), который имеет общую функциональность.Затем вы вызываете common_routine из обоих мест, которые должны получить к нему доступ.Однако, чтобы изменить код по мере необходимости, вы передадите ему блок и выдадите этот блок внутри метода, чтобы изменить его метод.
пример:
def common_routine
respond_to do |format|
if @user.save(params[:user])
flash[:notice] = 'The user has been updated'
format.html { yield }
format.xml { head :ok }
else
format.html { render :action => :edit }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
Затемвы вызываете его с помощью:
common_routine { redirect_to :controller => "subscriptions", :action => "show", :id => @user.account_id }
или
common_routine { redirect_to root_path }
Кодовый блок, который вы передаете в common_routine, будет "уступать", что позволяет вам иметь те же функциональные возможности с незначительными изменениями,необходимо.