我有一篇文章模型article.rb(带有相关图片):
attr_accessible:name,:content,:image_ids,:altname1
我现在想要创建另一种仅适用于城市的文章。它们将出现在网站的完全不同的部分,与所有其他文章无关。但模型完全一样。
创建新模型cityarticle.rb是否更好?或者更好的方法是将新的布尔列(具有true和false的cityarticle作为选项)添加到现有文章模型中。然后我会向控制器添加一个新动作:
def cityarticles
@cityarticles = Article.where("cityarticle = ?", true)
end
对我而言,保留一个模型更容易,但新模型可能有充分的理由?表现怎么样?
答案 0 :(得分:1)
新模型代表系统上的新“实体”。
Say CityArticles延伸文章
它应该是代码清晰度和可扩展性的新模型,以增加“CityArticles”的功能。
您可以制作新的表格支架或迁移:
rails g scaffold CityArticles参考:文章
或制作文章类polimorfic协会。阅读http://teachmetocode.com/articles/ruby-on-rails-what-are-polymorphic-associations/
答案 1 :(得分:1)
要问自己一些问题:这些类型的文章在哪些方面会有所不同?不同的人有权创建/编辑/删除它们吗?如何创建城市文章而不是将其意外保存为非城市文章,反之亦然?我是否使用attr_accessible或strong_parameters来阻止用户使用传入的params覆盖文章类型?不同的类型会有不同的验证规则(可能需要城市文章的城市名称)吗? 获得我想要的文章有多难?我有多大可能忘记指定要展示哪些文章并展示所有这些文章?
根据对这些问题的回答,您应该能够确定哪种数据结构最适合您。如果您使用Rails的STI模式,您可以使用一个表但两个不同的模型作为一个解决方案。性能可能不是主要考虑因素,但如果两种类型的文章永远不会被一起查询,那么在性能方面可能会稍微好一点,将它们分成不同的表格。