模型是否应与外部服务交互?

时间:2012-07-20 13:21:28

标签: model-view-controller

示例1:

Model类“News”以两种不同的语言(字段:en_text,jp_text)存储其文本。通常它只有一种语言的文本。我应该使用Google Translate API在回调before_save中翻译文本,还是应该将此代码放在Controller中?

示例2

模型类“付款”。当付款结算时,系统必须通知外部服务成功结算付款。该代码应放在何处,模型或控制器?

2 个答案:

答案 0 :(得分:0)

该模型通常用于“获取”或“设置”数据,因此从技术上讲,如果您的外部服务提供“获取”或“设置”数据的服务,那么是。

答案 1 :(得分:-1)

您的模型应该是您的应用程序的整个业务逻辑。您的申请的要求意味着您应该翻译您的文本或在付款时通知某些服务,不是吗?这意味着您应该在模型中编写它。

Controller是一个处理某些业务逻辑操作的请求参数的实体。控制器不应包含此类部件。

据我所知,您现在正在使用Rails,因此请查看以下链接(此模式对非Ruby程序员也很有用):

http://api.rubyonrails.org/classes/ActiveResource/Base.html

http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model - 经典:)