Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ROR(MVC):把代码放在哪里?在模型中写入函数,还是在控制器和服务中写入2个脚本?_Ruby On Rails - Fatal编程技术网

Ruby on rails ROR(MVC):把代码放在哪里?在模型中写入函数,还是在控制器和服务中写入2个脚本?

Ruby on rails ROR(MVC):把代码放在哪里?在模型中写入函数,还是在控制器和服务中写入2个脚本?,ruby-on-rails,Ruby On Rails,我有ruby on rails应用程序,该应用程序有1个模块,其中有表temp_ms和ms。表temp_ms用于存储临时数据,如果该临时数据得到批准,那么数据将从temp_ms移动到ms。在用户批准之前,有一个下拉列表包含选项“是”和“否”。如果用户选择“是”,则当数据获得批准时,“将数据从临时复制到ms”的脚本将立即执行。Buf如果用户选择“否”,则稍后将使用cronjob执行“将数据从temp_ms复制到ms”的脚本 (让我们调用脚本“将数据从temp_ms复制到ms”作为脚本A) 这2个选

我有ruby on rails应用程序,该应用程序有1个模块,其中有表temp_ms和ms。表temp_ms用于存储临时数据,如果该临时数据得到批准,那么数据将从temp_ms移动到ms。在用户批准之前,有一个下拉列表包含选项“是”和“否”。如果用户选择“是”,则当数据获得批准时,“将数据从临时复制到ms”的脚本将立即执行。Buf如果用户选择“否”,则稍后将使用cronjob执行“将数据从temp_ms复制到ms”的脚本

(让我们调用脚本“将数据从temp_ms复制到ms”作为脚本A)

这2个选项将执行相同的脚本A,我想知道的是,哪一个是更好的选项(考虑到MVC的概念),我写2个脚本吗?一个在approve方法控制器中,一个在服务中,将由cronjob调用?或者我在ms型中写了1个函数,那么该函数将在控制器和服务中调用


注意:脚本A包含来自多个表(至少400行)的创建和更新数据(表示例:temp_-ms、temp_-ms-A、temp_-ms-b、ms、ms_-A、ms_-b)(我不知道此脚本称为业务逻辑还是域逻辑)

如果我是您,我会在
app/actions/copy\u data\u from_temp\u ms\u to_ms.rb这样的地方创建一个服务对象,它为您处理迁移数据的所有逻辑

然后:

  • 在控制器中,如果服务对象选择
    Yes
  • 在您的cronjob/which运行中,如果选择了
    No
    ,则稍后执行迁移,您还可以调用相同的服务对象来执行该工作
通过这种方式,您可以从两个位置进行迁移,而无需重复您的逻辑

我认为这不属于模型

网上有很多关于服务对象的文章可以帮助您:


如果我是你,我会在某个地方创建一个服务对象,比如
app/actions/copy\u data\u from_temp\u ms\u to_ms.rb
,它为你处理迁移数据的所有逻辑

然后:

  • 在控制器中,如果服务对象选择
    Yes
  • 在您的cronjob/which运行中,如果选择了
    No
    ,则稍后执行迁移,您还可以调用相同的服务对象来执行该工作
通过这种方式,您可以从两个位置进行迁移,而无需重复您的逻辑

我认为这不属于模型

网上有很多关于服务对象的文章可以帮助您:


你的意思是在“应用程序有一个模块”中编写模型吗?你的意思是在“应用程序有一个模块”中编写模型吗?非常感谢,这对我很有帮助非常感谢,这对我很有帮助