绘制模型和Controller之间的界限

Mar*_*ona 7 ruby model-view-controller ruby-on-rails

我正在使用RoR构建这个宁静的应用程序,并且发现在应该在模型上发生的事情和应该在控制器上发生的事情之间划一条线有点困难.

作为一个例子,我在我的控制器上有7个方法(那些让它变得安静的方法,即index(),show(),create(),update()...),并且经常发现有必要添加额外的方法,并通过将它们创建为成员来实现.

我想在这里完成的是收集你们在哪里的经验(即我应该在模型上坚持所有数据库交互,只需从控制器中调用这些方法?)

此外,通过向我的控制器添加不涉及DB的内容,即我想进行HTTP调用以从网站屏幕抓取一些数据.

HTTP调用会变得庞大而混乱.应该将所有这些都发送到我的控制器,还是应该单独一个类或模块,并且只包含在我的控制器中以便可以调用它?

如果是这样,最好的办法是什么?

我对这一切有点困惑,所以有人提供意见会很棒.

提前致谢

Mon*_*ong 4

它是领域驱动设计的一部分。

领域是定义应用程序尝试处理和解决问题的领域的知识领域。

模型层被视为领域层。定义域或业务逻辑的所有规则都保存在这里。该模型以定义域的方式充当真实数据和应用程序其余部分之间的过滤器。

域的实现细节(mySQL 或 MSSql 或 Webservice 或 Xml 文件或外部网页或其他)被模型隐藏。

控制器只是信使。它的工作是从用户那里获取消息并将其传递给模型。模型给出回复,控制器找出将其传递给用户的最佳方式。

视图就像化妆师,只是确保数据看起来不错并且适合用户。

您正在抓取的网站可以被视为域的一部分。该网站包含定义您的应用程序正在定义的世界的知识。屏幕抓取过程正在以某种方式塑造这些知识,使其与您的应用程序定义的世界观的其他部分相关。控制器不关心这些知识从哪里来,它只是将消息传递给视图。视图会对数据进行处理,使其变得漂亮,然后将其发送给用户,用户完全不知道整个过程,只看到一个漂亮的网页!