在Rails应用程序中,组织非模型实用程序类的Rails方法是什么?

时间:2013-04-26 19:09:42

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我正在抽象支付网关我正在使用一个Subscription类和一个PaymentGatewayApi类,以便将来可以轻松更改它而无需触及模型。我的API位于app/api,看起来很好,因为我只有少数几个(尽管如果有人比我更聪明,我会移动它们)。

在尝试编写高质量代码并减少参数调用时,我需要创建一些简单的实用程序类。其中一个是CreditCardCustomer,可以在Subscription模型中实例化,然后将实例传递给PaymentGatewayApi

我的问题是,我应该把这堂课放在哪里?它是否需要在自己的文件中,或者我可以将多个类放在同一个文件中?对于一般的Ruby和特别是Rails,最佳实践是什么?

2 个答案:

答案 0 :(得分:2)

  

我的问题是,我应该把这堂课放在哪里?

通常这些课程都在\lib。但是,如果您计划在项目中使用这些类,您应该考虑为它创建一个gem(rails 3有一些nice support),并且可能将它作为开源发布?

  

是否需要在自己的文件中,或者我可以在同一个文件中放置多个类?

通常每个文件都有一个类,但Ruby不是Java,所以请跟随你的心。例如,尽量不要在同一个文件中放两个大类。您可能需要查看this answer

答案 1 :(得分:0)

CreditCardCustomer听起来像是我的榜样。即使它不是ActiveRecord模型,如果它是业务/域对象,它也属于app/models。如果它确实是一个实用工具类,那么一定要把它放在lib