在Rails中按顺序恢复ID

时间:2015-04-14 04:26:27

标签: ruby-on-rails ruby

我创建了一个测试博客应用,其中包含各种帖子和评论。在学习本教程之后,我们创建了几个与之相关的帖子和​​评论,每个帖子和评论都与一个唯一的ID相关联。

所以我可以调用some_address / posts / 1或/ 2或3,每个都有一个销毁选项。

我删除了ID为1的帖子,现在正如预期的那样,当我尝试使用帖子/ 1时,它会给我一个错误。但这使我的应用程序看起来很丑陋且不一致。

我知道我无法恢复该内容并恢复身份。但有没有我可以用来更新/ 2和/ 3成为/ 1和/ 2?

的代码

我是新手,只是测试它。请帮忙

2 个答案:

答案 0 :(得分:2)

保存记录后,我不应该更改数据库中的id。如果你尝试,你将遇到各种各样的问题(破坏的外键和引用)。

如果您不希望在帖子不存在的情况下向用户显示404(未找到)错误页面,您可以尝试将用户重定向到下一个帖子,如下所示:

# in your controller
def show
  @post = Post.where(id: params[:id]).first

  redirect_to(Post.where('id > ?', params[:id]).first!) unless @post
end

请注意,如果没有比删除的帖子更新的帖子,此代码仍会显示404(未找到)。

答案 1 :(得分:0)

1)首先在你的帖子模型中使用这一行

 has_many :comments, dependent: :destroy

2)在非现有页面上使用404错误页面,就像在你的情况下帖子不再存在一样。