質問

私の記事コントローラのCRUDアクションのいずれかが(インデックスを除く)を実行する前に

は、私は記事のアクティブフィールドが真であることを確認します。 私はbefore_filterでこれをやって思ったが、その時点の@articleで設定されていない、任意のアイデアを喜ば?

おかげ

役に立ちましたか?

解決

あなたはヘルパーメソッドの資料を設定して、あなたはそれでいる間、いくつかのコードの重複を削除することができます。

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

基本的に、あなたが今、代わりにcurrent_articleの編集(など)アクションとビュー、あなたのショーで@articleを呼び出すことができます。

他のヒント

あなたはわずか2 before_filterを行う必要があります。

負荷

1物品とフィールドが存在

かどうかを確認する第1
  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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top