说我在我的控制器里写一个动作。
虽然它有许多逻辑:几个if语句,也有案例。
是否有办法对这些逻辑进行分组,例如,我希望所有if语句都在一个文件中,而case语句位于另一个文件中。所以在我的控制器里,我不需要写一大堆代码,我只需要调用包含这些语句的文件。像在HTML中一样,我们使用script标记来包含JS文件
也许其他动作也可以在将来使用这些文件。
发布于 2016-09-28 14:55:06
您的控制器的操作不应该包含业务逻辑的数量。有许多潜在的解决办法:
ApplicationController中,以便从ApplicationController继承的任何控制器都可以重用这些方法。稍微偏离内置的Rails约定,您可以引入一层“服务”对象,您可以实例化这些对象来保存不一定适合您的模型层的可重用业务逻辑块。
它们通常被称为“服务”或“操作”,分别驻留在app/services和app/operations中。在代码结构方面,这些类将是简单的类,它们接受来自控制器的输入,在模型层执行复杂的操作,然后将输出提供给控制器,以便将输出呈现给用户。
在一个名为TrailBlazer的项目中定义了一组附加的Rails约定,它可能是一个有用的模板,可以在其上建模您自己的服务/操作层。
发布于 2016-09-28 15:02:44
我们不知道控制器中的确切逻辑,但通常将逻辑包含在控制器中是一种糟糕的做法。您应该委托模型中的所有业务逻辑。
从控制器中,您应该只处理与HTTP相关的事情,并将其委托给正确的模型。
假设这个程序不适合您,您也可以使用ActiveRecord关注,它们对于DRY非常有用,允许您包含一些可重用的代码片段。
如果这甚至不符合您的要求,您可以将一些.rb文件放在app_folder/lib中,它通常是自动加载的,您不需要手动地要求它
如果你贴出你的控制器的代码,这将是非常有用的,这将给我们一个更好的愿景,你正在试图做什么。
https://stackoverflow.com/questions/39750905
复制相似问题