属性をチェックすると、CRUD操作を実行する前に真であります
-
26-09-2019 - |
質問
私の記事コントローラの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
所属していません StackOverflow