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 № 1Esto 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