如何让这个动作抛出404?

Shp*_*ord 2 error-handling ruby-on-rails exception ruby-on-rails-3

我有以下行动:

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

  Video.increment_counter(:views_count, @video.id)
end
Run Code Online (Sandbox Code Playgroud)

但是现在如果find_by_key没有找到记录,它会抛出一个RuntimeError(Called id for nil).

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

我正在运行Rails 3.2.1.

Jam*_*mes 13

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

raise ActiveRecord::RecordNotFound if @video.blank?

或者使用爆炸版本,如果找不到find_by_key它将会提升ActiveRecord::RecordNotFound.

Video.find_by_key!(params[:key])