タグ

acts_as_treeに関するstarcycleのブックマーク (2)

  • acts_as_treeの使い方(Rails ActiveRecord::Base)

    メッセージのやり取りをスレッドで表現したくて、Railsでツリーを扱うacts_as_treeにたどり着いた。が、なんかacts_as_treeに関してはあんまり資料が無いね。。Module: ActiveRecord::Acts::Tree::ClassMethodsにある使い方以外無くて、後はparent_id使うよ〜とか書いてあるとこがあるくらい。 ちょうど下の図みたいなTreeを作りたかったのでいろいろ試した結果、acts_as_treeだけじゃ全然Treeとしてだめだってことが分かったよ。 まずそのままではself.rootとself.rootsはあるけど、@node.rootはできない。このままじゃスレッド表示の各メッセージで、そのルートが取れないじゃないか!! 以下がacts_as_treeのソースだけど、self.rootsとself.rootしか無いので、当然rootがと

  • 勉強にはよいけど、実戦では使ってほしくない事例 - masayang's diary

    SQLで木と階層構造のデータを扱う――入れ子集合モデルっていうのに、はてなブックマークが160もついていた。 別にRDBを否定する気はない。MySQLとかPostgresとかが簡単に入手できて誰でも操作できる以上、SQL文は開発者にとっての「読み書き算盤」、みたいな基礎知識になっている、といってもいいだろう。 でも、自分の所のプロジェクトではSQL文でぐだぐだ書くのは禁止している。 ロジックがコード体とSQLとに分散し、追いにくい。 複雑なSQL文はテーブル構造の変更に弱い。 読みやすいコードは実現可能だが、読みやすいSQLは実現不可能なことが多い。SQL文の意味を説明する資料が別途必要。仕様変更の際の手間が増える。 Railsだと ちなみに木構造をRailsで扱う場合は acts_as_tree を使う。 SQLで木と階層構造のデータを扱う――入れ子集合モデルと同じようなことを書いてみ

    勉強にはよいけど、実戦では使ってほしくない事例 - masayang's diary
  • 1