ABDとRailsと。現状の理解。

ちょっと最近まじめにABDとRailsをいじっていて、いくつか気づいたことのメモ。今まで気づいてなかったのかよ、と突っ込まれそうなこともたくさんありますが。

  • ActivityとEventとResourceは鼎立するわけでなく、Activity:(Event:Resource)と言う分類。Activityは他に比べて特異なもの。
  • 関連テーブル/交差エンティティの役割を果たすわけで当然ですが、Activityは一つの業務の塊の中で複数レコードできますよね。
    • 一つの業務を見るときの入口はActivityじゃなくEventかも。
  • Railsでいえば、DBヘの書き込みは、イベントをsave!したうえで、has_manyの:throughな交差エンティティ(Activity)を必要な個数分save!する、というのをAR::Base.transaction{}の中でやればOK。
    • もちろん毎回書くの繁雑なので、もっといい手法を考える必要あり。
      • 上記が簡単に書けるようになると、createアクションで(またはPOSTで受けたときのアクション)は非常に簡潔になりそう。
  • 読むときは現状のRailsではけっこう大変というか不格好。
    • 素だとcut_point_event.activities.first.some_resouces.firstとかになる。has_one :through欲しい。
    • has_one :throughだとcut_point_event.some_resouceになって引ける。ちょっとかっこいい。
      • でも上記の問題。resouce間の関連を引こうとするとマンドクセ
    • てかABDだと読む方法にちょっと頭の転換が必要だったのかも。つまりview作れ、と。
      • Activityに対して、読むときは専用のviewを作って読むのがスマート?
      • もちろん、必ずしも物理viewじゃあなくて、acts_as_viewとかwith_scopeを駆使したオレオレAAVでも可。
  • ResouceとEventの違いですが、確かに違うんだけど結局それができてからの時間というか、業務の立ち位置によって相対的になるものだと感じてます。
    • Eventも時とともにResouce的な使われ方をすることもある。
    • 「マスタ」って何さ?と言う話にもつながってきそうな感じ。メンテナンス作業を詳細な業務フローまでシステム化する必要がなくなった臭いリソースのことをマスタというと考えても良いのではないか。