2011-05-12 46 views
2

我对Rails相当陌生,试图对数据非常干燥。在多个模型和控制器中使用相同的代码(或者仅替换模型名称)

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

--- UPDATE ---这些表格作为遗留系统的一部分存在,所以我不能用一张表重新创建表格。

看起来不是DRY(湿?)拥有所有3个模型,3个控制器和9个完全相同的视图。

有没有办法将表名作为变量传递给这些实例?

如果这不是建议在rails中,你能解释为什么不呢?

+2

如果所有模型(几乎)完全相同,为什么不使用单表继承? – Zabba 2011-05-12 19:06:18

+0

不幸的是,这些表正在被另一个应用程序使用,所以我不能将它重新创建为单个表继承。我会更新这个问题,最初应该提到这一点。 – pedalpete 2011-05-12 20:54:08

回答

1

简单的干燥方法是为这些视图创建常见的部分并渲染它们。

如果你想干你的控制器/模型,你可以将你的逻辑提取到另一个他们都很乐意继承/需要的类。

+0

能不能详细介绍一下yoka?当你说提取到另一个类时,该类应该作为模型存在吗?帮手?在一个已经存在的模型中?我假设'要求',我会在我的控制器或模型的顶部使用require'className'?是对的吗? – pedalpete 2011-05-14 16:52:11

+0

看看如何编写扩展控制器功能的rails插件,这样您就可以编写通用操作并在需要类似功能的控制器中使用这些操作。 [http://guides.rubyonrails.org/plugins.html](http://guides.rubyonrails.org/plugins.html) – yoka 2011-05-15 10:40:58

+0

插件的东西似乎相当多的开销,我最终做的是把所有东西放在一个控制器,然后在其他控制器的顶部包含require controller_name,然后调用我需要的。在未来的yoka,如果你能更清楚地解释你的意思,你可能会发现更多的运气让你的答案被接受。请注意,您对我的评论的回复没有回答这个问题,只是说'在另一个班级中“没有说明我在找什么类的课程。作为一名初学者,你的回答指示我在哪里寻找,但并没有真正回答这个问题。 – pedalpete 2011-05-24 17:00:29

相关问题