型号还是帮手? - 铁路

时间:2017-10-03 09:16:18

标签: ruby-on-rails model-view-controller

我们有一个名为Influencer的模型,并且队友提出了一种方法,用于检索影响者的所有电子邮件。然后他在一个视图中使用它。他把它放在帮手(模块)中:

def emails(influencer)
  # do stuff with influencer to extract emails (spread in several fields)
end

我认为这样的方法应该进入模型,因为除了视图之外,它在代码中的任何地方都非常有用(我们有一个非常强大的基于作业的后端)。

Influencer模型中的代码将是这样的:

def emails
  # do stuff with influencer to extract emails (spread in several fields)
end

influencer.emails # Returns influencer emails.

他给出的具体原因是模型中应该只接触触及数据库的代码。 IMO任何提取代码以从模型中检索数据的内容都应该放在模型中。 Here一个问题/答案,指出了我的观点。

您认为采用这种方法的最佳位置是什么?

1 个答案:

答案 0 :(得分:0)

我建议将此逻辑移至单独的服务,例如EmailRetriever。它将有一个publeic方法influencer_email(influencer)。这种方法将逻辑与视图和模型分开。您可以稍后添加其他方法,例如doctors_emails(doctor)等。