6

我的模型中的函数中几乎都有所有“共享”语句。问题是我收到以下错误,当我需要在我的控制器中使用多个这些功能时:

控制器操作应该调用一种模型方法,而不是初始查找或新建

IDE 更深入地解释了这一点:

如果控制器操作在初始 .find 或 .new 之后包含多个模型方法调用,则此检查会发出警告。建议您在模型类中实现所有业务逻辑,并使用单一方法访问它。

这是否意味着所有的逻辑都应该放在更复杂的模型函数中?我曾认为控制器的工作是调用模型函数并将结果传递给视图。

如果我将模型函数代码放回控制器,一切都会正常工作,但我会在所有控制器操作中得到代码重复。

那么,这里的正确方法是什么?

4

1 回答 1

4

警告消息确实意味着逻辑应该放在单个模型函数中,但不一定要更复杂。为了避免模型重复和/或“胖模型”问题,您可能需要引入模型所依赖的其他类。

是的,控件的工作是调用模型函数,但仅作为一个薄薄的饰面,根据除初始创建/查找之外的每个控制器操作的一个模型函数的检查指南。

如果您将函数向后移动,我不确定我是否理解您关于在控制器中获取代码重复的评论,因为您始终可以在控制器级别引入共享函数。但同样,这不是“瘦控制器”和“合理瘦模型”的推荐方法,并根据需要支持类。

于 2013-07-27T16:31:16.957 回答