【发布时间】:2014-04-24 13:52:42
【问题描述】:
我正在学习 Ruby on Rails。我注意到这句话“Fat model, skinny controller”。我不确定那是什么意思。这是否意味着我必须在模型中使用更多代码而在控制器中使用更少代码?有人可以解释一下吗?
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller
我正在学习 Ruby on Rails。我注意到这句话“Fat model, skinny controller”。我不确定那是什么意思。这是否意味着我必须在模型中使用更多代码而在控制器中使用更少代码?有人可以解释一下吗?
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller
你理解正确。这个建议的主要原因是您只需要处理请求参数并在控制器中初始化模型层。业务逻辑需要在模型层实现。这使您可以避免代码重复并使用模型的单元测试使测试更容易。
另请阅读 this 并浏览整个网站以了解最佳做法。
【讨论】:
简而言之,是的,您有正确的习惯用法,尽管如果任何具有已定义角色的代码变得臃肿,这可能是一个问题,可能需要进行一些基本的重构。
模型中使用的业务逻辑可以在多个不同的路由、Web 服务 API 或命令行脚本中重复使用。它也可以在不调用 Web 服务器的情况下进行单元测试。
控制器中相同的业务逻辑只能通过网页界面使用。
【讨论】: