Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 跨多个模型和控制器使用相同的代码(或仅替换模型名称)_Ruby On Rails_Dry - Fatal编程技术网

Ruby on rails 跨多个模型和控制器使用相同的代码(或仅替换模型名称)

Ruby on rails 跨多个模型和控制器使用相同的代码(或仅替换模型名称),ruby-on-rails,dry,Ruby On Rails,Dry,我对Rails还相当陌生,所以我尽量对数据保持干净利落的态度 我有几个模型,控制器和视图是完全相同的。模型使用id、name,控制器仅通过id检索,并且总是从另一个表中获取相同的对象,操作也完全相同 ---更新---这些表是作为遗留系统的一部分存在的,所以我不能仅用一个表来重新创建它 3个模型、3个控制器和9个视图的功能完全相同,这似乎不是干的(湿的?) 对于这些实例,是否有方法将表名作为变量传递 如果rails中不建议这样做,您能解释一下为什么不这样做吗?简单的方法是为这些视图创建公共部分并渲

我对Rails还相当陌生,所以我尽量对数据保持干净利落的态度

我有几个模型,控制器和视图是完全相同的。模型使用id、name,控制器仅通过id检索,并且总是从另一个表中获取相同的对象,操作也完全相同

---更新---这些表是作为遗留系统的一部分存在的,所以我不能仅用一个表来重新创建它

3个模型、3个控制器和9个视图的功能完全相同,这似乎不是干的(湿的?)

对于这些实例,是否有方法将表名作为变量传递


如果rails中不建议这样做,您能解释一下为什么不这样做吗?

简单的方法是为这些视图创建公共部分并渲染它们


如果你想干涸你的控制器/模型,你可以将你的逻辑提取到另一个类,它们都从/需要继承而来。

如果所有模型(几乎)完全相同,为什么不使用单表继承呢?不幸的是,这些表正被另一个应用程序使用,因此我无法将其作为单表继承重新创建。我会更新这个问题,一开始应该提到。你能详细说明一下yoka吗?当您说提取到另一个类时,该类是否应该作为模型存在?帮手?在已经存在的模型中?我假设使用“require”时,我会在控制器或模型的顶部使用require“className”?是这样吗?看看如何编写扩展控制器功能的rails插件,这样您就可以编写通用操作,并在控制器中使用需要类似功能的插件。插件的东西似乎有点开销,我最后做的是把所有东西都放在一个控制器中,然后在其他控制器的顶部包含require controller_name,然后只调用我需要的东西。在未来的yoka,如果你能更清楚地解释你的意思,你可能会发现更多的运气让你的答案被接受。请注意,您对我的评论的回答并没有回答这个问题,仅仅说“在另一个类中”并没有说明我在寻找哪种类型的类。作为rails的初学者,您的回答告诉了我应该去哪里寻找,但并没有真正回答问题。在未来的pedalpete中,如果您能更清楚地解释您需要什么,您可能会发现更多的运气来回答您的问题。请注意,yoka的回答本可以更详细,但您不能因为对继承等基本OOP原则缺乏理解而指责他。