0

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

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

我考虑过编写一个助手并将其包含在控制器中,但我不喜欢这个解决方案,因为助手应该只帮助在视图中渲染内容,并且它们不应该与业务层相关的任务混为一谈。

你将如何编码?

4

2 回答 2

1

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

/app
  /controllers
  /services
    calculation_service.rb

然后你像这样在你的控制器上使用它:

def show
  @model = Model.find(params[:id])
  @total = CalculationService.calculate_sum(@model.price, @model.subtotal)
end
于 2012-07-20T12:40:48.413 回答
1

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

于 2012-07-20T13:10:34.280 回答