我正在尝试建立一个系统,用户只能看到他或她写的文章.
在文章控制器中,我把它放在下面
@article = current_user.articles.find(params[:id])
Run Code Online (Sandbox Code Playgroud)
其中params [:id]是article_id.
我只想知道如何从显示中跳过错误,如果文章不存在,或者如果用户没有查看权限,只需重定向到:index操作.我把@ article.nil?上面的find语句之后的条件语句,但似乎上面的find语句会立即生成错误,如下所示.
找不到ID = 1662的文章[WHERE(articles.user_id = 1)]
我该如何解决这个问题?
Bre*_*der 22
如果ActiveRecord :: Base.find找不到记录,它总是抛出异常,这是故意的.你应该只使用,find如果你绝对希望拥有你正在寻找的任何东西.如果您要渲染show动作并且找不到该文章,则应该挽救该异常并呈现404(未找到)而不是重定向到索引(技术上).
如果你想在id没有强制异常的情况下通过它的属性找到某些东西,请使用动态查找器find_by_id,如果它没有找到具有该id的记录,则返回false.
编辑:
动态查找器现在具有不同的签名,find_by_id现在应该是:
find_by :id, id_to_find
请参阅新的Rails指南查询
| 归档时间: |
|
| 查看次数: |
9195 次 |
| 最近记录: |