2

Github が各レポの課題の ID を 1 から開始する方法が本当に気に入っています。

ActiveRecord を使用してその情報をどのようにモデル化しますか?

次の URL スキームをサポートしたい/profile/:username/posts/:post_id

各ユーザーの投稿を 1 から開始し、そこからインクリメントしたいと思います。

4

2 に答える 2

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 に答える
2

Rails ではこれを簡単に行うことはできませんが、キーが (repo id、issue id) である複合キーを使用してこれを実現できます。この gemは、それらのサポートを Rails 3 に追加します。レポごとに増分 ID を生成するには、ジェネレーターが必要です。

完全な複合キーを使用したくない場合は、コードでそれを偽造できます。通常のインクリメント PK に加えて、@repo.issues.find(params[:issue_id])issue に arepo_idとkey の両方が含まれる のようなものが必要です。issue_id

于 2013-08-02T20:27:13.380 に答える