我怎么能有2个资源共享轨道控制器
问题描述:
我继承了一个Rails项目,并正与如何应对某种情况战斗我怎么能有2个资源共享轨道控制器
比方说,我有2个不同的类/数据库表:
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
不幸的是,我们不希望出现这种情况是URL结构。结构应该是
/recordings/100
/recordings/300
我很难搞清楚如何合并所有这一切。
我第一次尝试有我做以下内容:通过CDS控制器
- 管一切
- 试图找到CD,如果我失败了 - 试图找到乙烯基
- ,如果我找到乙烯,乙烯渲染/显示
,几乎效果很好 - 问题是,我们的谐音靠“资源”相当多,而我似乎无法找出如何改变,对的意见。
有没有人有关于如何进行的建议?我对任何事情都很开放。
答
没有关于控制器说它必须绑定到模型,你可以简单地有一个RecordingsController
。这就是说,试图处理不同的模型不会那么简单。
如果CD和乙烯具有非常相似的列,您可以尝试单表继承。请参阅此页上的单表继承部分:http://api.rubyonrails.org/classes/ActiveRecord/Base.html
我不确定您在视图上的问题是什么;你能解释一下吗?
答
这里有两个表的事实是一个问题。我建议迁移数据库以使用单表继承,其中你有一个recordings
表,Vinyl
和Cd
类比从Recording
继承。然后你可以有一个recordings_controller.rb和两个类型的每个类型的附加控制器。您需要添加type
列以获得STI魔术。
代码中有些东西可能在rails中设置了“resource”的本地值。我一直无法弄清楚如何重写。有很多偏见,包括依赖于各种观点中的“资源” - 所以这将是一个重写aorund的巨大承诺。 – 2011-01-12 18:31:56