我继承了一个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
我很难弄清楚如何将所有这些合并在一起。
我的第一次尝试让我做了以下事情:
几乎运作良好 - 问题是我们的部分依赖于“资源”相当多,我似乎无法找到如何改变视图。
有没有人建议如何继续?我对任何事都持开放态度。
答案 0 :(得分:2)
控制器没有任何内容表明它必须与模型绑定,您只需要RecordingsController
即可。也就是说,尝试处理不同的模型并不是那么简单。
如果CD和Vinyl具有非常相似的列,则可以尝试单表继承。请参阅此页面上的“单表继承”部分:http://api.rubyonrails.org/classes/ActiveRecord/Base.html
我不确定你的观点问题是什么;你能解释一下吗?
答案 1 :(得分:1)
这里有两个表是一个问题。我建议迁移数据库以使用单表继承,其中有一个recordings
表,并且Vinyl
和Cd
类比从Recording
继承。然后,您可以为这两种类型中的每一种提供recordings_controller.rb和可选的附加控制器。您需要添加type
列才能获得STI魔力。