在存在“Articles”、“Jobs”、“Workers”等模型的服务器应用程序中
例如,在有这些模型的服务器端应用程序中:
- 产品
- 工作
- 工作人员
并且有一个像 start job 这样的动作,它执行以下操作:
- 产品:作业的产品请求数量增加
- 作业:作业已插入
- 工人:作业的工人设置为不可用,并保存了对当前作业的引用
现在我的问题是:我应该把上面描述的逻辑放在哪里?
我应该有一个名为“jobs/start”的控制器,它调用模型“job.start(args ...)”上的方法。在此模型方法中,它调用“product.increaseRequestedQuantity(args...)”和“worker.setBusy()”
我应该有一个名为“jobs/start”的控制器,它调用“job.start(args...)”然后是“product.increaseRequestedQuantity(args...)”和“worker.setBusy()”
我真的不知道哪个是最佳实践,首先模型知道其他模型,但逻辑是核心。在第二种情况下,模型并不直接了解彼此,但逻辑更加分散。在工作中还有一个名为“start”的方法,人们会假设它会在应用程序级别启动工作(这意味着它会更改产品和工作模型)但会影响模型级别(意味着只更改工作模型,不改变产品和工人模型)。
您对此事和这种关注点分离有何看法?
这适用于使用 Rails 的人,即使我不是特别谈论 Rails(我自己的框架基于 node.js 中的服务+模型,其中服务就像 Rails 中的控制器),或任何其他 MC 框架, (请注意,我不关心视图,因为服务必须只导出数据。视图仅在请求数据的客户端上)。
我读过关于Rails 模型是否应该为了瘦控制器而关注其他模型?但如果可能的话,我希望得到更深入的解释,以及这个确切主题的书籍/链接参考。
感谢您花时间阅读我的问题(: