我有两个关于MVC如何工作的问题。我很确定我应该添加几个资源,但我只想得出这个结论,并想首先要求更好地理解。
第一个问题: 我有两个模型,用户和主题。用户可以将主题输入数据库。对于每个主题,有5个数据输入表格(基线,3个月,6个月,......),每个表格大约100-200个问题(关系将是每个主题具有每个数据输入表单中的1个)。每个数据输入表格应该是新资源吗?
第二个问题: 假设我想将一些科目随机分组:
从视图中,用户输入要随机分组的主题数量,以及要分配的组名称。 form标签指定我为此函数创建的一个名为randomize的动作。
从控制器中,randomize使用从视图发送的参数来查询数据库,然后更新每条记录以反映该组。我应该为它创建一个新的资源,而不是为randomize函数创建一个新的动作吗?作为旁注,如果在模型中完成任何这些计算(除了定义变量之外)吗?
感谢您的时间。任何帮助将不胜感激。我正在通过我正在学习的所有信息对我进行正式的批评......但我觉得我真的很接近实际理解MVC。
答案 0 :(得分:1)
我先回答你的第二个问题。
您应该创建控制器来处理资源的CRUD任务。在这个问题中,您询问有关创建“组”的问题。无论这是一个实际的资源,还是只是对其他资源集合的修改,您都有创建“组”的概念,可能是阅读/更新“组”,当然还有一个“组”。
基于此,我宁愿拥有一个RandomGroup
控制器,我可以使用标准的REST接口调用它,而不是在另一个控制器的一侧填充一些#randomize
动作。
关于你的第一个问题......也许,也许不是。 这实际上取决于数据输入表单是否具有自己的任何业务逻辑。如果没有那么它就成为大型物体的一部分是没有害处的。但是,如果您的测试和代码在Subject模型中开始变得过于复杂,您可能希望将其拆分为多个模型或至少包含在该模型中的多个模块。
也许你可以认为“基线”,“3个月”,“6个月”都是一样的......除了他们的交付时间。也许这本身就是一个模型,Subject
可以has_many :forms
??
深思熟虑。