Github が各レポの課題の ID を 1 から開始する方法が本当に気に入っています。
ActiveRecord を使用してその情報をどのようにモデル化しますか?
次の URL スキームをサポートしたい/profile/:username/posts/:post_id
各ユーザーの投稿を 1 から開始し、そこからインクリメントしたいと思います。
Github が各レポの課題の ID を 1 から開始する方法が本当に気に入っています。
ActiveRecord を使用してその情報をどのようにモデル化しますか?
次の URL スキームをサポートしたい/profile/:username/posts/:post_id
各ユーザーの投稿を 1 から開始し、そこからインクリメントしたいと思います。
代わりに、各投稿に一意のグローバル 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
Rails ではこれを簡単に行うことはできませんが、キーが (repo id、issue id) である複合キーを使用してこれを実現できます。この gemは、それらのサポートを Rails 3 に追加します。レポごとに増分 ID を生成するには、ジェネレーターが必要です。
完全な複合キーを使用したくない場合は、コードでそれを偽造できます。通常のインクリメント PK に加えて、@repo.issues.find(params[:issue_id])
issue に arepo_id
とkey の両方が含まれる のようなものが必要です。issue_id