首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:将一个动作分成几个部分

问Rails:将一个动作分成几个部分
EN

Stack Overflow用户
提问于 2016-09-28 14:48:07
回答 2查看 31关注 0票数 0

说我在我的控制器里写一个动作。

虽然它有许多逻辑:几个if语句,也有案例。

是否有办法对这些逻辑进行分组,例如,我希望所有if语句都在一个文件中,而case语句位于另一个文件中。所以在我的控制器里,我不需要写一大堆代码,我只需要调用包含这些语句的文件。像在HTML中一样,我们使用script标记来包含JS文件

也许其他动作也可以在将来使用这些文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-28 14:55:06

您的控制器的操作不应该包含业务逻辑的数量。有许多潜在的解决办法:

  • 您可以将逻辑移动到模型层,使用模型关注在模型之间共享逻辑。
  • 将操作的逻辑提取为几个可重用的方法,并将这些方法移动到ApplicationController中,以便从ApplicationController继承的任何控制器都可以重用这些方法。
  • 引入一个控制器关注,将相关的逻辑分块到方法中,并在需要访问逻辑的控制器中包含这个关注点。

稍微偏离内置的Rails约定,您可以引入一层“服务”对象,您可以实例化这些对象来保存不一定适合您的模型层的可重用业务逻辑块。

它们通常被称为“服务”或“操作”,分别驻留在app/services和app/operations中。在代码结构方面,这些类将是简单的类,它们接受来自控制器的输入,在模型层执行复杂的操作,然后将输出提供给控制器,以便将输出呈现给用户。

在一个名为TrailBlazer的项目中定义了一组附加的Rails约定,它可能是一个有用的模板,可以在其上建模您自己的服务/操作层。

票数 1
EN

Stack Overflow用户

发布于 2016-09-28 15:02:44

我们不知道控制器中的确切逻辑,但通常将逻辑包含在控制器中是一种糟糕的做法。您应该委托模型中的所有业务逻辑。

从控制器中,您应该只处理与HTTP相关的事情,并将其委托给正确的模型。

假设这个程序不适合您,您也可以使用ActiveRecord关注,它们对于DRY非常有用,允许您包含一些可重用的代码片段。

如果这甚至不符合您的要求,您可以将一些.rb文件放在app_folder/lib中,它通常是自动加载的,您不需要手动地要求它

如果你贴出你的控制器的代码,这将是非常有用的,这将给我们一个更好的愿景,你正在试图做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39750905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档