모델 상태를 구현하는 데 문제가 있습니다. 이는 잘못된 설계 때문일 수 있습니다.상태 모델 디자인 패턴
상태가있는 모델이 있습니다. 모델의 인스턴스가 여러 개있을 수 있으며 사전 정의 된 상태 (예 : created, renewed, retrieved 등)가있을 수 있습니다. 각 개별 상태에 대해 모델에 대한 계산 논리가 있습니다. 예 : model.cost()
은 각 상태에 대해 다르게 계산됩니다.
모델을 저장할 때 ActiveRecord가 자동으로 올바른 model_status_id
을 설정하도록하고 싶습니다.
model.status = StatusModel.retrieved
그리고 난이 데이터베이스에 모델 행의 상태를 저장해야
case status
when renewed
# ...
when retrieved
# ..
end
생각은 내가 지금 가지고 무엇을 : 나는 같은 것을 할 수있는 이상적인 상황에서 생각 :
ModelStatus < ActiveRecord::Base
has_many :models
Model < ActiveRecord::Base
belongs_to :model_status
그러나 코드에 많은 문제가 있습니다. 누구에게나 좋은 아이디어 나 패턴이 있습니까?
상태가 미리 정의되어있는 경우 DB와 달리 상수로 코드를 상수로 저장하는 것으로 충분하지 않습니까? – Olly