在我正在开发的应用程序中,课程有许多问题,而这些问题又有许多步骤。现在有一个将问题添加到课程的表格(然后可以将步骤加入到这些问题中)。我们想要的是有一个只有LaTeX输入字段的表单,然后处理TeX以在其步骤中产生多个问题。
目前,我们正在问题控制器中执行这些操作。我们有两种方法,texnew,它与new完全相同,只是它有一个不同的视图,重定向到另一个新方法:texcreate,它使用助手方法提取问题和步骤(使用一系列正则表达式),尝试创建它们,并在出现问题时闪烁一些信息性错误消息。
问题是,我一直在读,我们真的不应该在控制器中做很多事情,我们应该支持在模型中做一些事情。虚拟属性可能是接收文本字段并对其进行处理以创建单个问题的正确想法,但我不知道如何使其适用于多个问题,也不知道如果某个地方出现问题,如何生成任何类型的错误消息。
有没有更好/更惯用的方法来做这件事?
如果所有关系都设置正确,那么就不需要虚拟属性。您可以使用新的rails3嵌套属性。这里有一篇关于它们的好文章。这将允许您更多地依赖模型验证逻辑,并保持rails鼓励的瘦控制器胖模型习惯用法。