如果找不到的情况,则限制条件的显示为404



我想限制我的 PostsController上的 show 动作仅允许发布 posts。

这就是我所拥有的:

def show
  @post = Post.find_by slug: params[:slug], published: true
end

我希望这会抛出404。如果我尝试访问不存在的slug,它确实可以。但是,如果我试图访问确实存在但未出版的sl,它将返回a 200 empty view。

我意识到我可以使用简单的if解决此问题。但是,我想知道是否有 rails-way to:

  • 查找或失败
  • 将路由 pre-em>仅发布到仅发布的帖子

当找不到记录时,请使用 #find_by!而不是 #find_by进行异常

@post = Post.where(slug: params[:slug], published: true).first!

first!如果找不到记录,请升高ActiveRecord::RecordNotFound

最新更新