Tengo un controlador con múltiples acciones que toman: año y mes como atributos de la URL. He hecho un método privado check_date a para verificar que la fecha sea válida y verificar que la fecha no esté en el futuro.¿Cómo detengo la ejecución del controlador después de usar redirect_to? (Usando Rails)
def check_date(year, month)
if month < 1 || month > 12 || year < 2000
flash[:notice] = I18n.t 'archive.invalid_date'
redirect_to :action => 'index'
elsif year > Date.today.year || (year == Date.today.year && month > Date.today.month)
flash[:notice] = I18n.t 'archive.no_future'
redirect_to :action => 'month_index',
:year => Date.today.year,
:month => Date.today.month,
:type => params[:type]
end
end
¿Hay una manera de poner fin a la ejecución rieles controlador después de la redirect_to?
maneras que se me ocurren son o bien lanzar una excepción después de la redirect_to o para devolver un valor desde check_date y comprobar que en cada acción que llama - algo así como
def month_index
year = params[:year].to_i
month = params[:month].to_i
if !check_date(year, month)
return
...
end
Pero me pregunto si hay algunas buenas maneras de hacer esto. Estaba medio esperando que al haber llamado redirect_ a los rieles reconocería que quería detenerme , pero eso no parece suceder.
Esto puede resolver el problema del asker pero vine aquí esperando una solución como la de vrish88. – iphone007