徹底的にグーグルで調べた後、あまり発生しないように見える問題を述べますが、それでも非常に基本的な問題です。アクティブ レコードのリンク リスト。私が知る限り、モデルには 2 つの関連付けが必要です。
class Child < ActiveRecord::Base
belongs_to :parent
belongs_to :next, :class_name => 'Child', :foreign_key => 'next_id'
belongs_to :previous, :class_name => 'Child', :foreign_key => 'previous_id'
end
これで、親のすべての子を取得できます。
children = Child.where("parent_id = ?", parent_id)
ここで質問です。もちろん、1 つのクエリでデータベースからすべての子を取得したいのですが、リンクされた順序で子を調べたいと考えています。つまり、最初の子は前の属性が nil の子になります。次の子は、最初の次の属性によって接続された子になり、次の属性が nil になるまで続きます。このようにすることは可能ですか、それとも最初の子にクエリを実行してから、「プリキャッシング」せずに子から子へと移動する必要がありますか?