Ruby on rails 3.1 Rails 3.1和缺少服务层

Ruby on rails 3.1 Rails 3.1和缺少服务层,ruby-on-rails-3.1,Ruby On Rails 3.1,我正在Rails 3.1中编写一个类似酒店的应用程序,我是Rails的新手。 我需要一些关于如何编写应用程序服务层中通常管理的内容的建议 应用程序需要一些服务来计算价格,并且这种方法必须适用于多个控制器。到现在为止,我把所有这些东西都放在一个控制器里,但现在我必须把它从那里拿出来,我真的不知道如何和在哪里 我曾考虑编写一个助手并将其包含在控制器中,但我不喜欢这种解决方案,因为助手应该只帮助在视图中呈现内容,而不应该干扰与业务层相关的任务 您将如何对此进行编码?也许您可以创建一个名为service

我正在Rails 3.1中编写一个类似酒店的应用程序,我是Rails的新手。 我需要一些关于如何编写应用程序服务层中通常管理的内容的建议

应用程序需要一些服务来计算价格,并且这种方法必须适用于多个控制器。到现在为止,我把所有这些东西都放在一个控制器里,但现在我必须把它从那里拿出来,我真的不知道如何和在哪里

我曾考虑编写一个助手并将其包含在控制器中,但我不喜欢这种解决方案,因为助手应该只帮助在视图中呈现内容,而不应该干扰与业务层相关的任务


您将如何对此进行编码?

也许您可以创建一个名为
services

/app
  /controllers
  /services
    calculation_service.rb
然后在控制器上使用它,如下所示:

def show
  @model = Model.find(params[:id])
  @total = CalculationService.calculate_sum(@model.price, @model.subtotal)
end

我甚至不会在控制器里这样做。如果可能的话,我会把逻辑推到你的模型上。如果在多个模型中需要它,我会在您的lib文件夹中创建一个mixin,并将其包含在每个模型中。

我已经这样做了,但我不知道CalculationService是一个类还是其他什么(因为我很确定它不是类)。在我看来,Mixin是适合我需要的东西。我把它放在控制器中,只是为了向客户展示它的工作原理。在我看来,把它放在控制器中是错误的,就像放在模型中一样(在这种情况下,甚至没有价格模型)。无论如何,Mixin似乎是解决方案。非常感谢,我不知道他们