我有一个模型,这个模型的一列代表一个状态。它是数值,可以是 1,2,3。
我有两个担忧:
a) 根据业务逻辑,状态只能从 1 到 2 和从 2 到 3。不能从高数回到低数,也不能一步一步从 1 到 3。
b)我不想将这些数字暴露给控制器(不喜欢到处乱飞的神奇数字)。
我做了以下
我创建了 stateX?、stateY?、stateZ? 等方法。允许控制器检查当前状态。这有助于我担心 b)。
如果控制器进行了不可接受的状态切换,我在其中创建了方法 setStateX、setStateY、stateZ 和 raise。这有助于我关注 a) 和 b)。
但是,我觉得这更像是 Java/C++ 方式(这是我的背景)——6 种方法来做一件事。
在 RoR 中是否有更好的方法来实现这一点?