我在实现模型状态时遇到了问题,这可能是由于错误的设计所致。
有一个具有状态的模型。该模型可以有多个实例,但只有几个预定义状态(如:已创建、已更新、已检索等)。对于每个单独的状态,都有一些计算逻辑用于该模型。例如,
我希望ActiveRecord在保存模型时自动设置正确的
然而,这在代码中给了我很多问题。有没有人对此有好的想法或模式?
有一个具有状态的模型。该模型可以有多个实例,但只有几个预定义状态(如:已创建、已更新、已检索等)。对于每个单独的状态,都有一些计算逻辑用于该模型。例如,
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
然而,这在代码中给了我很多问题。有没有人对此有好的想法或模式?