我仍然对Rails缺乏经验,并且希望能够在我想要构建的应用程序中规划模型和关联。这是非常基本的,但是我有一些功能,我很难搞清楚。它基本上是MyAnimeList的缩小版。
这是交易:
我目前有用户模型和动漫模型。 动漫包含动画节目列表。我还有一个列表模型,它有一个用户,可能会有很多动漫,这取决于你们的建议。
第一个功能看起来相当简单,但是我又踩了两个我想要包含的功能:
所以我只是不确定要包含哪些模型(是必要的Stat模型?),或者需要嵌套的地方(即嵌套资源),如果有的话。
我看过许多不同的指南/教程/类似的问题等,但没有运气,我学到了什么,并将它应用于(对我来说)复杂的场景。
对此有任何帮助或讨论将不胜感激!如果您需要任何进一步的细节,请告诉我。
答案 0 :(得分:0)
首先,永远不要打电话给你的模特'秀'。它令人困惑,含糊不清,根本无法弄清楚课程的内容。如果你告诉我你有一个Show模型,我怎么知道你指的是什么?命名非常重要,所以值得投入时间。
无论如何,我会从绘制基本设置开始。这肯定有助于使您的设置可视化。
您的解释有点令人困惑,但您可以想到当前的设置:
这只是一个例子,只是很快就想到了。希望它能让您基本了解如何考虑主要构建块。
更新:MrMorphe是对的,List也是模型的坏名称。几乎和Show一样。说实话,分数也很糟糕,你应该仔细考虑所有的名字。
答案 1 :(得分: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是否有更自然的建模/改进这种关联的方式......