在我的任何文章控制器crud操作可以運行(不包括索引)之前,我想確保文章的活動字段是真實的。 我想過在before_filter中這樣做,但是在那個時候@article還沒有設置好,有什麼想法嗎?在執行CRUD動作之前檢查屬性是否爲真
感謝
在我的任何文章控制器crud操作可以運行(不包括索引)之前,我想確保文章的活動字段是真實的。 我想過在before_filter中這樣做,但是在那個時候@article還沒有設置好,有什麼想法嗎?在執行CRUD動作之前檢查屬性是否爲真
感謝
你可以設置一個輔助方法的文章,而你在它去除一些重複代碼。
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
基本上你現在可以在你的節目,編輯(等)的行動和觀點,而不是@article
調用current_article
。
您需要做的僅僅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
謝謝shingara,這是很好的做法/形式? – pingu 2010-09-28 16:09:12
您可能想要添加一個'before_filter'來檢查current_article的可用性。 – 2010-09-28 17:20:55
如果找不到文章,我更新了我的代碼以引發異常。只要該方法被調用至少一次(它是),那麼before_filter就不是必需的。 – vise 2010-09-28 17:44:38