如何让这个动作抛出404?

时间:2012-03-14 14:20:15

标签: ruby-on-rails ruby-on-rails-3 exception error-handling

我有以下行动:

def show
  @video = @commentable = @favoritable = Video.find_by_key(params[:key])

  Video.increment_counter(:views_count, @video.id)
end

但是现在如果find_by_key找不到记录,则会引发RuntimeErrorCalled id for nil)。

那么,如果找不到记录,怎么能让这个动作抛出404?

我正在运行Rails 3.2.1。

1 个答案:

答案 0 :(得分:13)

在尝试使用@video.id的值增加之前添加此项。

raise ActiveRecord::RecordNotFound if @video.blank?

或者使用find_by_key的爆炸版本,如果找不到则会ActiveRecord::RecordNotFound

Video.find_by_key!(params[:key])