6

徹底的にグーグルで調べた後、あまり発生しないように見える問題を述べますが、それでも非常に基本的な問題です。アクティブ レコードのリンク リスト。私が知る限り、モデルには 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 になるまで続きます。このようにすることは可能ですか、それとも最初の子にクエリを実行してから、「プリキャッシング」せずに子から子へと移動する必要がありますか?

4

2 に答える 2

1

おそらくRailsのacts_as_list gemを使うべきでしょう。リスト内のアイテムの位置を格納し、リストと の親オブジェクトにスコープしますbelongs_to。すべての要素を照会してから正しくソートできるようにすることで、この問題も解決します。

于 2012-07-04T16:20:56.040 に答える