在我的任何文章控制器crud操作可以运行(不包括索引)之前,我想确保文章的活动字段为true。 我考虑过在before_filter中做这个,但是那时@article还没有设置,有什么想法吗?
由于
答案 0 :(得分:1)
你只需要做2 before_filter。
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
答案 1 :(得分:1)
您可以在辅助方法中设置文章,并在您使用时删除一些代码重复。
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
。