0

我仍然对 Rails 非常缺乏经验,并且想要在我想要构建的应用程序中规划模型和关联。这是非常基本的,但有一些功能我很难弄清楚。它本质上是MyAnimeList的缩小版。

这是交易:

我目前有一个用户模型和一个动漫模型。动漫包含动漫节目列表。我还有一个List模型,它有一个用户,大概会有很多动画,这取决于你们的建议。

第一个功能看起来相当简单,但我想包括两个额外的功能:

  1. 我希望用户能够通过单击“添加到我的列表”按钮进入主动漫列表并将动漫添加到他们自己的列表中。
  2. 用户可以为他们的动漫评分,并更改他们完成的剧集/节目的数量。这方面的统计数据应该反映在主列表中,例如,如果有人看完刀剑神域 (SAO) 动漫,然后对其评分并将其标记为已完成,它将更新主动漫列表上的 SAO 列表,显示统计信息比如“2987 人完成了这部动漫”和“这部剧的平均用户评分是 4.2 分(满分 5 分)”。也许是统计模型?我怎么能实现这个?
  3. 有时,一个节目可能会意外地在数据库中重复,或者有多个日语翻译。我需要能够合并节目(以及所有相关的统计数据/用户等)。

所以我只是不确定要包含哪些模型(是否需要 Stat 模型?),或者需要嵌套在哪里(即嵌套资源),如果有的话。

我查看了许多不同的指南/教程/类似问题等,但没有任何运气将我所学的知识应用到(对我而言)复杂的场景中。

对此的任何帮助或讨论将不胜感激!如果您需要更多详细信息,请告诉我。

4

2 回答 2

0

首先,永远不要称你的模型为“秀”。它令人困惑,模棱两可,而且根本无法弄清楚课程的全部内容。如果你告诉我你有一个 Show 模型,我怎么知道你指的是什么?命名非常重要,因此值得投入时间。

无论如何,我将从绘制基本设置开始。这肯定有助于使您的设置可视化。

您的解释有点令人困惑,但您可以考虑当前的设置:

  1. A User has_one lists,因此WatchList belongs_to a User
  2. 一个WatchList has_many日本动漫,因此Anime belongs_to a WatchList
  3. 一个动漫has_many review_scores,因此ReviewScore属于一个动漫

这只是一个例子,只是短暂的思考过。希望它能让您对如何思考主要构建块有一个基本的了解。

更新:MrMorphe 是对的,List 对模型来说也是一个坏名字。几乎与Show相同的原因。老实说,Score 也很糟糕,你真的应该仔细考虑所有的名字。

于 2013-09-15T11:54:17.923 回答
0

我的想法:尽量不要从列表的角度思考。List 是一种通用数据类型,而是尝试以您正在建模的概念的更抽象术语来思考(例如 WatchedShows)。这些“抽象概念”经常成为你的模型。

正如彼得所说,动漫比表演好。可能还有更多你想为动漫系列建模的内容,例如剧集、季节等?现在考虑这一点将在您考虑合并事物时为您节省问题......

现在我自己是 Rails 的新手,并且对我的数据建模很生疏,所以如果我对以下内容有误,请有人跳到我身上:

您在用户和动漫之间存在关系。该关系是一个模型(WatchedAnime?),其中一个用户观看(?)许多动漫,并且动漫已经被许多用户观看(?)。要对此建模,您可能需要查看http://guides.rubyonrails.org/association_basics.html上的 has_many :through 关联。用户分配的分数将成为这种关系的一个元素。

然后你可以通过一个简单的语句来计算动漫分数,例如

average_score = WatchedAnime.where("anime_id = 100").avg('score')

编辑:您还需要忽略用户未分配分数的实例,否则会导致平均值下降。

如前所述,我是 Rails 的新手,has_many :through 关系的问题是您必须验证用户与给定动画没有现有关系,因此我想知道 rails 是否有更自然的方式建模/完善这种关联...

于 2013-09-15T13:40:00.527 回答