0

我有一篇文章模型 article.rb (带有相关图片):

attr_accessible :name, :content, :image_ids, :altname1

我现在想创作另一种只针对城市的文章。它们将出现在网站的一个完全不同的部分,并且与所有其他文章无关。但是模型完全一样。

是创建一个新模型 cityarticle.rb 更好,还是在现有文章模型中添加一个新的布尔列(cityarticle 具有 true 和 false 作为选项)更好。然后我会向控制器添加一个新动作:

def cityarticles
  @cityarticles = Article.where("cityarticle = ?", true)
end

对我来说,只保留一个模型更容易,但新模型可能有充分的理由吗?性能怎么样?

4

2 回答 2

1

新模型代表系统上的新“实体”。

说 CityArticles 扩展文章

它应该是一个新的模型,用于代码清晰度和可扩展性,以增加“CityArticles”的功能。

您可以制作新的表格脚手架或迁移:

rails g 脚手架城市文章参考:文章

或制作文章类polimorfic 协会。阅读http://teachmetocode.com/articles/ruby-on-rails-what-are-polymorphic-associations/

于 2013-04-08T12:49:31.747 回答
1

要问自己一些问题:这些类型的文章在哪些其他方面会有所不同?不同的人是否有权创建/编辑/删除它们?如何创建城市文章而不让它意外保存为非城市文章,反之亦然?我是否使用 attr_accessible 或 strong_parameters 来防止用户使用传入的参数覆盖文章类型?不同类型是否会有不同的验证规则(可能需要城市文章的城市名称)?只获得我想要的文章有多难?我有多大可能忘记指定要显示和显示所有文章的类型?

根据对这些问题的回答,您应该能够决定哪种数据结构最适合您。如果您使用 Rails 的 STI 模式,作为一种解决方案,您可以使用一张桌子但有两种不同的模型。性能可能不是主要考虑因素,但如果这两种类型的文章永远不会一起查询,那么将它们分成单独的表在性能方面可能会稍微好一些。

于 2013-04-08T13:35:49.170 回答