2013-04-26 73 views
1

我正在抽象出支付网关,我使用了一个Subscription类和PaymentGatewayApi类,以便在将来可以轻松更改而无需触摸模型。我的API位于app/api,这似乎很好,因为我只有其中的一些(尽管如果有人比我更聪明,我会将它们移动)。在Rails应用程序中,组织非模型实用程序类的Rails方法是什么?

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

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

回答

1

我的问题是,我应该在哪里上这门课?

通常这些类居住在\lib。然而,如果你打算在你的项目中使用这些类,你应该考虑为它创建一个gem(rails 3有一些nice support),也许将它作为开源发布?

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

通常每个文件只有一个类,但Ruby不是Java,因此请按照你的心。例如,不要将两个大类放在同一个文件中。你可能想看看this answer

0

CreditCardCustomer听起来像一个模型给我。即使它不是ActiveRecord模型,如果它是业务/域对象,它也属于app/models。如果它真的是一个实用课程,那么通过一切手段将它放在lib

+0

我刚才假设所有模型都是ActiveRecord模型。我只是使用这个类来避免传递一系列属性,ala Ben Orenstein风格的重构。我有更多重要的AR模型封装了它的所有属性,如Subscription和User。根据我的描述和经验,这听起来像是一个Utility类还是一个Domain Object? – AKWF 2013-04-27 02:18:30

相关问题