如何防止Rails控制器中的业务逻辑

时间:2012-02-09 08:19:24

标签: ruby-on-rails ruby model-view-controller

如果我正确理解MVC,控制器应该只包含将模型与视图粘合在一起的逻辑。它包含应用程序逻辑,例如身份验证,会话和应用程序的其他内容。另一方面,模型应该执行应用程序的业务逻辑,并且视图应该更新以响应模型的更改。但是,你在Rails中怎么做?

我的控制器包含查找模型对象等的逻辑,然后在响应中更新视图。

我是否误解了应用程序逻辑和业务逻辑。如果有人可以帮我理解MVC,我会考虑。

2 个答案:

答案 0 :(得分:3)

Rails是MVC的一个很好的实现,允许良好的抽象。查找模型对象不是业务逻辑。

为了确保您做到这一点,请保持控制器的短路;通过创建新方法将任何重要逻辑移动到模型;使用内置的rails helper和方法;尽可能遵循RESTful架构(不完美,但有帮助)并让其他人与您讨论您的代码。

答案 1 :(得分:2)

问题的一部分是Rails架构使它看起来像model = ActiveRecord,这不一定是真的。 Model类或模块可以是您喜欢的任何类型。

当模型-are- ActiveRecord(在大多数情况下确实有意义)时,您可以向那些可以由控制器调用并包含业务逻辑的类添加方法。