我想限制我的 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
。