Closed5
2024-05-13 週の読んだ記事(Railsで集約/HanamiでDDD/Railsにおけるドメイン駆動設計の実践/概念の輪郭)

5/13
責務を分けよう委員会

5/14
Hanami DDD

5/15
ActiveRecordのインスタンスをドメインモデルのデータコンテナとして使い、ドメインモデルに対するマッパーを用意するだけでRailsの世界観を破壊せずにドメインレイヤを導入することができる。

5/16
- Repositoryパターンが推し進めるものは、いわゆるActive Recordパターンと真逆です
- 20%の労力をかけてActive Recordを以下のような形に整えれば、Repositoryで80%のメリットを得られるという話も何となく思い出されます。
class Transaction
def self.of_id(id)
find(id)
end
def self.last_not_pending_of_user_id(user_id)
where.not(status: "pending").where(user_id: user_id).order(:id).last
end
end
↓
class TransactionRepository
class Record < ActiveRecord::Base
self.table_name = "transactions"
end
private_constant :Record
Transaction = Data.define(Record.attribute_names.map(&:to_sym))
class << self
def of_id(id)
as_struct(Record.find(id))
end
def last_not_pending_of_user_id(user_id)
as_struct(Record.where.not(status: "pending").where(user_id: user_id).order(:id).last)
end
private
def as_struct(record)
Transaction.new(**record.attributes.symbolize_keys)
end
end
end
既存のActiveRecord > 全モデル導入して浸透させる労力
だなぁ

5/17
- 概念の輪郭
このスクラップは2024/05/23にクローズされました