Rails 3.1和缺少服务层

时间:2012-07-20 12:19:24

标签: ruby-on-rails-3.1

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

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

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

你会如何编码?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

也许您可以创建名为services

的文件夹
/app
  /controllers
  /services
    calculation_service.rb

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

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