2011-10-30 13 views
0

私はrailsとawesome_nested_setを使ってnested_commentsを作成しています(アーティストには多くのsketchbook_commentsがあります)。私は第1レベルをタイムスタンプで並べ替えるようにしています。これにより、上の一番上の、コメントの上にある最新のコメントを見ることができます。コメントのコメントはタイムスタンプのASCの時系列順になるようにして、会話が作成された順番に従うようにしたいと思います。スタックのオーバーフローと同様に、今のところ入れ子のレベルは1つだけです。第1レベルがソートdescで第2レベルがソートアスペクトのネストされたコメントを行う方法?

artist.sketchbook_comments.order("lft ASC") 

しかし、すべての新しいルートレベルのコメントは「終了」または「右に入れているようだ:私は1つのDBコールに関連性についてすべてのコメントを取得することができるよ

#controller 
def create 

#create 1st level comment as simple association 
@sketchbook_comment = @artist.sketchbook_comments.create(params[:sketchbook_comment]) 

#if replying to a comment, only then do we nest 
if parent = @artist.sketchbook_comments.where(:id => params[:parent_id]).first 
    @sketchbook_comment.move_to_child_of(parent) 
end 

    redirect_to :back 
end 

ツリーの「側」(以前のノードよりも大きいlft値を持つ)。それゆえ、私は、どこかで時系列順にしか分類できない。

提案がありますか? (私は、すべてのルートノードの注文( "created_at DESC")を取り出し、各レベルでcomment.children.order( "lft ASC")を実行することでこれを達成できると知っていますが、可能ならばDBを複数回)

答えて

0

ルートレベルのコメントを挿入するときに新しいノードを左に配置するために、awesome_nested_setのmove_to_left_of(id)を使用するモデルメソッドが追加されました。

関連する問題