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

¿Fue útil?

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
scroll top