2

我真的很喜欢 Github 如何为每个 repo 从 1 开始问题的 id。

您如何使用 ActiveRecord 对这些信息进行建模?

我想支持以下 URL 方案/profile/:username/posts/:post_id

我希望每个用户的帖子从 1 开始,然后从那里递增。

4

2 回答 2

2

Rails 并不容易做到这一点,但您可以使用复合键来完成此操作,其中键是(repo id,issue id)。这个 gem将为 Rails 3 添加对它们的支持。您需要一个生成器来为每个 repo 生成递增的 ID。

如果您不想使用完整的复合键,可以在代码中伪造它。除了正常递增的 PK 之外,您只需要类似的东西@repo.issues.find(params[:issue_id]),其中 issues 同时包含 arepo_id和key。issue_id

于 2013-08-02T20:27:13.380 回答
2

相反,您应该让每个帖子都有一个唯一的全局 ID。在线程或用户的上下文中,为了方便,编号可以从 1 开始——也就是说,它不会是存储在数据库中的数字,但是当您请求时,/users/someuser/posts/1它实际上会查找该用户的第一个帖子他们的所有帖子都按创建日期升序排列,无论帖子 ID 实际是什么。

示例:用户请求/users/someuser/posts/3,SQL 可能类似于SELECT * FROM posts WHERE username = :username ORDER BY date ASC LIMIT 1 OFFSET 2

于 2013-08-02T20:19:07.517 回答