我想将我的PostsController上的show动作限制为仅允许发布的帖子。

这就是我所拥有的:

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


我希望这会引发404。如果我尝试访问不存在的段,它会执行。但是,如果我尝试访问确实存在但未发布的块,则会返回200和一个空视图。

我意识到我可以用一个简单的if解决这个问题。但是,我想知道是否有Rails-way:


找到或失败
将路线预检查限制为仅发布的帖子

最佳答案

当找不到记录时,使用#find_by!而不是#find_by引发异常

08-16 05:46