/ / Pasar el valor de retorno de 'before_action' a las próximas acciones: ruby-on-rails, before-filter

Pase el valor de retorno de 'before_action' a las próximas acciones - ruby-on-rails, before-filter

Este es mi MpdController:

class MpdController < ApplicationController
require "ruby-mpd"

def status
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end

def help
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end

def pause
mpd = MPD.new
mpd.connect
# ...
mpd.disconnect
end
end

Como puede ver, todos y cada uno de los métodos requieren una nueva instancia de MPD y la guardan en mi variable. Ahora, ¿sería posible hacerlo a través de before_action y after_action, proporcionados por Rails?

Pensé en algo como:

before_action :new_mpd
after_action :disconnect_mpd

def new_mpd
mpd = MPD.new
mpd.connect
mpd
end

def disconnect_mpd(mpd)
mpd.disconnect
end

Sería necesario obtener el valor de retorno de mi filtro anterior y pasarlo luego a mi filtro posterior.

¿Es esto algo que funciona? Gracias por tu ayuda.

Respuestas

4 para la respuesta № 1

Esto se hace asignando variables de instancia del controlador.

before_action :new_mpd

def status
# use @mpd
end

private

def new_mpd
@mpd = MPD.new
@mpd.connect
end