Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 模特还是助手轨道_Ruby On Rails_Model View Controller - Fatal编程技术网

Ruby on rails 模特还是助手轨道

Ruby on rails 模特还是助手轨道,ruby-on-rails,model-view-controller,Ruby On Rails,Model View Controller,我们有一个名为影响者的模型,一个团队成员想出了一个方法来检索影响者的所有电子邮件。然后,他在一个视图中使用它。他将其放在助手(模块)中: 我认为这种方法应该进入模型,因为它在代码中除了视图之外的任何地方都非常有用(我们有一个非常强大的基于作业的后端) 我的影响者模型中的代码将如下所示: def emails # do stuff with influencer to extract emails (spread in several fields) end influencer.email

我们有一个名为影响者的模型,一个团队成员想出了一个方法来检索影响者的所有电子邮件。然后,他在一个视图中使用它。他将其放在助手(模块)中:

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

我的
影响者
模型中的代码将如下所示:

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

influencer.emails # Returns influencer emails.
他给出的具体原因是,在模型中,应该只使用触及数据库的代码。IMO任何从模型中提取数据的抽象代码都应该放在模型中。指出我观点的问题/答案


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

我建议将此逻辑转移到单独的服务,如EmailRetriever。它将有一个公共方法
影响者\电子邮件(影响者)
。这种方法将逻辑从视图和模型中分离出来。你们以后可以添加其他方法,比如
doctors\u email(doctor)
等等。

我想说的是,任何对象的公共属性都应该进入模型。但模型应该是干净的和最小的。最后,您的方法应该进入decorators。
我认为这样的方法应该进入模型,因为它在代码中除了视图之外的任何地方都非常有用(我们有一个非常强大的基于作业的后端)然后它应该在模型中,因为它可以从应用程序中的任何位置访问。我的选择是
def emails
  # do stuff with influencer to extract emails (spread in several fields)
end

influencer.emails # Returns influencer emails.