Ruby on rails 模型或控制器的逻辑

Ruby on rails 模型或控制器的逻辑,ruby-on-rails,ruby-on-rails-4,separation-of-concerns,Ruby On Rails,Ruby On Rails 4,Separation Of Concerns,MVC的原则让我在制作Rails 4应用程序时思考了一下。我完全支持将逻辑移到模型中,并坚持Fat模型原则 但我只是想知道你对以下内容的看法: “我的付款”表上存在用户发起的更改付款状态的操作。要取消付款,付款必须已处于活动状态 在调用模型中的方法之前,我已选择使用我的控制器首先确定付款状态为活动状态。我的一般方法是让控制器决定是否需要调用DB,然后才调用模型中的方法来实际进行调用 你认为我应该让模型决定是否更新状态吗?出于某种原因,我觉得这不合适 听到一些关于这方面的想法将非常有趣。我建议您将

MVC的原则让我在制作Rails 4应用程序时思考了一下。我完全支持将逻辑移到模型中,并坚持Fat模型原则 但我只是想知道你对以下内容的看法:

“我的付款”表上存在用户发起的更改付款状态的操作。要取消付款,付款必须已处于活动状态

在调用模型中的方法之前,我已选择使用我的控制器首先确定付款状态为活动状态。我的一般方法是让控制器决定是否需要调用DB,然后才调用模型中的方法来实际进行调用

你认为我应该让模型决定是否更新状态吗?出于某种原因,我觉得这不合适


听到一些关于这方面的想法将非常有趣。

我建议您将其放在您的模型中

原因:

  • 这是模型的责任。它应该知道何时取消付款
  • 干的。如果您需要在不同的位置执行相同的行为,则不必重复活动检查
  • 易于测试,因为整个逻辑都在一个地方
    我的一般方法是让控制器决定是否需要对DB进行调用,然后我才调用模型中的方法来实际进行调用


    模型不仅仅是进行数据库调用。

    业务逻辑属于MVC中的模型部分。模型的作用是包含数据和业务逻辑。另一方面,控制器负责接收用户输入并决定做什么。

    实际上,如果您正在实现MVC,那么控制器只负责更改模型层和(很少)当前视图实例的状态。这在Rails中是不可能的。不幸的是,只有RoR与MVC的关系出现在“事物的名称”中。它用哑模板取代了视图,用一堆活动记录取代了模型层。这导致UI逻辑和模型的重要部分都被强制放在“控制器”中。