我最近刚刚继承了一个 Rails 应用程序,并且正在讨论向前推进的架构决策。这里有一些背景......感谢您的反馈。
目前有 16 种不同的广告类型,它们都具有一组相同的属性,一些具有一个或两个附加属性,还有一些具有三个或四个属性。
目前,每种广告类型都有一个单独的模型和带有相应列的表格,以及一个单独的控制器和 CMS 中的视图,也用于基本的 CRUD。CMS 利用了inherited_resources,从而限制了一些重复。
我写出了属性集——大约有 20 个,涵盖了所有广告类型。某些广告类型具有关联 - 几个 has_many 关联,其中外键存储在关联表中,还有一些属于_to。
广告没有实际行为。特定的广告类型只是简单地显示在各个页面上,所以只要我能确定是否有特定类型的广告,我们就可以了。
我正在讨论转向单个模型、表和控制器,但希望从 stackoverflow 社区获得尽可能多的输入,以了解这是否 1)非常适合问题 2)任何性能问题 3)任何潜力我没有想到的编程瓶颈。到目前为止,这是我的想法......
假设路线 /:location/:ad_type/new(例如 /homepage/ad_type_1/new):
ad_controller 将创建 @ad 并将 ad_type 设置为 params[:location] + params[:ad_type] 并渲染新视图,该视图将包含一系列条件,用于显示给定 ad_type 的适当部分。提交将触发创建操作,使用为广告类型定义的预期属性创建广告,在这种情况下,其中之一是 ad_type = homepage_ad_type_1。
我没有过多考虑检索数据,但假设 ad_type 列设置正确,我应该能够创建一个基于 ad_type 列提取记录的“of_type”范围。不确定我是否在那里遗漏了什么。
验证将根据 ad_type 值而有所不同。
我不完全确定在任何给定时间会存在多少广告,但我觉得这可以在以后解决。通过将一些陈旧的行移到 ad_archives 表或类似的表中。
感谢您的想法。谢谢。