我希望将PostsController
上的 show 操作限制为仅允许发布的帖子。
这就是我所拥有的:
def show
@post = Post.find_by slug: params[:slug], published: true
end
我希望这会抛出一个404
。如果我试图访问一个不存在的slug,它会这样做。但是,如果我尝试访问确实存在但未发布的slug,它将返回 200 和空视图。
我意识到我可以通过一个简单的if
来解决这个问题。但是,我想知道是否有 Rails-way :
答案 0 :(得分:3)
使用#find_by!
代替#find_by
在未找到记录时抛出异常
答案 1 :(得分:2)
@post = Post.where(slug: params[:slug], published: true).first!
如果没有找到记录, first!
会引发ActiveRecord::RecordNotFound
。