【发布时间】:2013-05-29 02:21:00
【问题描述】:
我正在编写一个库存管理 Rails 应用程序。我有class Product < ActiveRecord::Base、class Foo < Product 和class Bar < Product。 Foo 和 Bar 的行为略有不同,但使用单表继承对它们来说非常有用。
问题在于控制器和视图。目前我将它们 完全 分开,这可行,但包含大量重复代码。通过复制两个目录并将@foo、@foos 和Foo 替换为@bar、@bars 和Bar,实际上可以从另一个生成一个。当我添加新功能时,添加两次会很烦人。而且,当然,不干也不是 Rails 方式。
那么这里的正确方法是什么?对于控制器...我应该创建一个ProductsController,然后只使用元编程魔法来替代Foo 或Bar?还是使用继承?对于视图,我是否应该只有产品视图,但使用巧妙的路由使其看起来像我有单独的(和 RESTful)/foos 和 /bars 路径?
谢谢。
【问题讨论】:
-
请说出 Foo 和 Bar 的区别。还请提供一个充分的理由为什么您需要两个模型而不是一个模型。谢谢。解决方案可能会根据您的情况而有所不同。
-
不同之处在于它们生成序列号的方式,以及它们向用户注册的语义。
标签: ruby-on-rails model-view-controller dry