0

グーグルで質問に関連する結果は1つも見つかりませんでしたが、かなり単純な質問のように見えます。
与えられたのは記事モデルとコメントモデルです。これで、記事の表示ページで、すべての記事のコメントを一覧表示するときに、各コメントには、全体のIDではなく、その記事内の時系列のIDが含まれている必要があります。

アソシエーションとすべては正常に機能しますが、かなり複雑な方法でコメントモデルにarticle_comment_id列を手動で追加し、コントローラーでその属性を処理せずに、「相対的な」comment_idを実装する方法がわかりません。

それが属する親モデル内のオブジェクトIDを呼び出す簡単なメソッドはありませんか?

4

2 に答える 2

1

私の知る限り、レコードがそのピアでインデックス化されている場所を自動的に確認する方法はありません。

私がこれを行った方法は、配列を反復処理しながらインデックスを追跡することです。

したがって、ERB の場合:

<% @article.comments.each_with_index do |comment, index| %>
    <div class="comment_id"><%= index + 1 %></div>
    <div class="content"><%= comment.content %></div>

または HAML:

-@article.comments.each_with_index do |comment, index|
    .comment_id= index + 1
    .content= comment.content

ページネーションの場合は、index + 1 + (page*num_items)または何かが必要です。

iteration_id次のような列を追加してから、作成前のフィルターを次のように Comment モデルに追加することで、データベースにインデックスを保存できます。

before_create do
  last_comment = article.comments.unscoped.order("iteration_id DESC").select('iteration_id').first
  self.iteration_id = last_comment ? last_comment.iteration_id + 1 : 0
  true
end

コメントも破棄された場合は、何かをする必要があります。

それが役立つことを願っています!

于 2012-06-01T23:23:30.787 に答える
1

パーシャルを使用してそれらを反復処理できます。

<%= render @article.comments %>

パーシャル内では、 でコメントの数を参照できますcomment_count。これは、Rails が提供する自動機能です。

于 2012-06-01T23:59:13.050 に答える