我正在抽象支付网关我正在使用一个Subscription类和一个PaymentGatewayApi类,以便将来可以轻松更改它而无需触及模型。我的API位于app/api
,看起来很好,因为我只有少数几个(尽管如果有人比我更聪明,我会移动它们)。
在尝试编写高质量代码并减少参数调用时,我需要创建一些简单的实用程序类。其中一个是CreditCardCustomer
,可以在Subscription
模型中实例化,然后将实例传递给PaymentGatewayApi
。
我的问题是,我应该把这堂课放在哪里?它是否需要在自己的文件中,或者我可以将多个类放在同一个文件中?对于一般的Ruby和特别是Rails,最佳实践是什么?
答案 0 :(得分:2)
我的问题是,我应该把这堂课放在哪里?
通常这些课程都在\lib
。但是,如果您计划在项目中使用这些类,您应该考虑为它创建一个gem(rails 3有一些nice support),并且可能将它作为开源发布?
是否需要在自己的文件中,或者我可以在同一个文件中放置多个类?
通常每个文件都有一个类,但Ruby不是Java,所以请跟随你的心。例如,尽量不要在同一个文件中放两个大类。您可能需要查看this answer
答案 1 :(得分:0)
CreditCardCustomer
听起来像是我的榜样。即使它不是ActiveRecord模型,如果它是业务/域对象,它也属于app/models
。如果它确实是一个实用工具类,那么一定要把它放在lib
。