Rails で DDD をしている時の集約の実装方法を考えます。 ActiveRecord と集約を別として考える メリット 集約が PORO (Plain Old Ruby Object、素の Ruby) で実装できる 集約にDB へのアクセスロジックが混在せず、ビジネスロジックの実装に集中できる デメリット ActiveRecord のインスタンスが別に作成されるのでメモリの使用効率が悪い 集約へ再構成を行う実装コストがかかる (ライブラリがあるかも) 方法 ActiveRecord のインスタンスは DAO として捉えます。 DAO はテーブルに対して操作をおこなうインタフェースとして考えればよく、リポジトリから使用することが想定されます。 例えば、作成や更新を行う リポジトリ#save を実装する場合には以下のようになります。 class UserRepository def sa
