我在Rails 3.1中编写了一个类似酒店的应用程序,而我是Rails的新手。 我需要一些关于如何编写通常在应用程序的服务层中进行管理的建议。Rails 3.1和缺乏服务层
该应用程序需要一些服务来计算价格,这种方法必须可用于多个控制器。直到现在,我把所有这些东西都放在控制器中,但现在我必须从那里拿出来,真的我不知道如何以及在哪里。
我想过编写一个帮手,并将其包含在控制器中,但我不喜欢这个解决方案,因为帮助者只应该帮助渲染视图中的东西,而不应该混淆与业务层相关的任务。
你会如何编码?
我在Rails 3.1中编写了一个类似酒店的应用程序,而我是Rails的新手。 我需要一些关于如何编写通常在应用程序的服务层中进行管理的建议。Rails 3.1和缺乏服务层
该应用程序需要一些服务来计算价格,这种方法必须可用于多个控制器。直到现在,我把所有这些东西都放在控制器中,但现在我必须从那里拿出来,真的我不知道如何以及在哪里。
我想过编写一个帮手,并将其包含在控制器中,但我不喜欢这个解决方案,因为帮助者只应该帮助渲染视图中的东西,而不应该混淆与业务层相关的任务。
你会如何编码?
我不会做这样的控制器。如果可能的话,我会把逻辑推到你的模型上。如果需要多个模型,我会在lib文件夹中创建一个mixin,并将其包含在每个模型中。
也许你可以创建一个名为services
/app
/controllers
/services
calculation_service.rb
然后你用它在你的控制器这样的文件夹:
def show
@model = Model.find(params[:id])
@total = CalculationService.calculate_sum(@model.price, @model.subtotal)
end
我做到了,但我不明白,如果CalculationService将是一个类或其他东西(因为我很确定它不是类)。在我看来,Mixin是我需要的套件 – 2012-07-20 17:00:13
我只是为了向客户展示一些作品而放入控制器。从我的角度来看,把它放在控制器中与放入模型相同的方式是错误的(在这种情况下,甚至没有价格模型)。无论如何,Mixin似乎是解决方案。非常感谢,我不知道他们 – 2012-07-20 17:01:27