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的な使われ方をすることもある。
- 「マスタ」って何さ?と言う話にもつながってきそうな感じ。メンテナンス作業を詳細な業務フローまでシステム化する必要がなくなった臭いリソースのことをマスタというと考えても良いのではないか。