Comprobación de un atributo es cierto antes de ejecutar una acción CRUD
-
26-09-2019 - |
Pregunta
Antes de cualquiera de mis acciones crud controlador artículo puede ejecutar (con exclusión de índice), que quiere asegurarse de que el campo activo del artículo es cierto. Pensé en hacer esto en un before_filter, pero en ese momento @article no se ha establecido, por favor, alguna idea?
Gracias
Solución
Se podría establecer el artículo en un método de ayuda y eliminar algunos duplicación de código, mientras estás en ello.
class .. < ApplicationController
helper_method :current_article
def index
# your code etc..
end
private
def current_article
@article ||= Article.find(params[:id], :conditions => { :active => true }) ||
raise(ActiveRecord::RecordNotFound)
end
end
Básicamente, usted puede ahora llamar current_article
en su espectáculo, editar (etc) acciones y puntos de vista en lugar de @article
.
Otros consejos
Sólo tiene que hacer 2 before_filter.
1 con la carga del artículo y el segundo para comprobar si existen campo
before_filter :load_article, :only => [:show, :edit, :update]
before_filter :has_field, :only => [:show, :edit, :update]
...
private
def load_article
@article = Article.find(params[:id])
end
def has_field
unless @article.active
redirect_to root_url
end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow