2013-07-27 16 views
3

我的模型中几乎所有的“共享”语句都在函数中。问题是,我收到以下错误,当我需要使用更多的则在我的控制这些功能之一:为什么控制器操作应该调用一个模型方法,而不是初始查找或新的?

控制器动作应该调用一个模型的方法除了初始 发现或新

和IDE不断深入解释:

该检查警告说,如果控制器动作包含多于一个 模型方法调用,初始.find或之后。新。建议您使用 来实现模型类中的所有业务逻辑,并使用 一种方法来访问它。

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

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

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

回答

2

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

是的,控制器的工作是调用模型函数,但只能作为薄薄板,根据每个控制器动作的一个模型函数的检查准则,除了初始创建/查找。

因为您可以随时在控制器级别引入共享功能,所以我不确定您是否理解了您的有关在控制器中获取代码复制的意见。但是,再次,这不是“瘦控制器”和“合理瘦模型”的推荐方法,需要支持类。

+0

那么,是否有定义何时在控制器级别创建新模型方法或共享方法的规则?实际上,我在我的控制器中使用的唯一方法是默认的方法(新建/编辑/更新/等) – gotqn

+0

我没有注意到硬性和快速的规则,只有“薄控制器“和”不胖模型“。再次,除了你提到的两个选择之外,另一个选择是创建一个供模型使用的新类,以便您不需要控制器或模型中的其他方法。 –

相关问题