我遇到了实现模型状态的问题。这可能是由于错误的设计。状态模型设计模式
有一个模型有一个状态。可以有多个模型实例,只有几个预定义的状态(如:创建,更新,检索等)。对于每个人的状态,都有一些模型的计算逻辑。例如。 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 2009-08-25 10:05:28