我如何在rails中共享2个资源控制器

时间:2011-01-12 00:35:38

标签: ruby-on-rails

我继承了一个Rails项目,正在与如何应对某种情况作斗争

假设我有两个不同的类/ db表:

vinyl records
compact discs

每个表中的每个项目都有自己的项目ID和唯一的全局标识符

示例:

vinyl a -- vinyl.1 guid.100
vinyl b -- vinyl.2 guid.200
cd a    -- cd.1 guid.300
cd b    -- cd.2 guid.400

这让我有一个很好的安静网址,如:

/vinyls/1
/cds/1

不幸的是,我们不希望它成为网址结构。结构应该是

/recordings/100
/recordings/300

我很难弄清楚如何将所有这些合并在一起。

我的第一次尝试让我做了以下事情:

  1. 通过cds控制器管道所有内容
  2. 尝试找到CD,如果我失败了 - 试着找到乙烯基
  3. 如果我找到乙烯基,渲染乙烯基/显示
  4. 几乎运作良好 - 问题是我们的部分依赖于“资源”相当多,我似乎无法找到如何改变视图。

    有没有人建议如何继续?我对任何事都持开放态度。

2 个答案:

答案 0 :(得分:2)

控制器没有任何内容表明它必须与模型绑定,您只需要RecordingsController即可。也就是说,尝试处理不同的模型并不是那么简单。

如果CD和Vinyl具有非常相似的列,则可以尝试单表继承。请参阅此页面上的“单表继承”部分:http://api.rubyonrails.org/classes/ActiveRecord/Base.html

我不确定你的观点问题是什么;你能解释一下吗?

答案 1 :(得分:1)

这里有两个表是一个问题。我建议迁移数据库以使用单表继承,其中有一个recordings表,并且VinylCd类比从Recording继承。然后,您可以为这两种类型中的每一种提供recordings_controller.rb和可选的附加控制器。您需要添加type列才能获得STI魔力。

相关问题