在Rails项目中组织类

时间:2014-01-27 21:39:05

标签: ruby-on-rails ruby

我在Rails应用程序中组织一些资源时遇到了小问题。 让我们说:

# app/models/bucket.rb
class Bucket < ActiveRecord::Base
end

我想添加一个简单的类来对Bucket进行一些计算,让我们说:

class ItemsCalculator
end

和...

class ShippingCostCalculator
end

我应该如何组织这三个类,并考虑与Bucket的逻辑关系。

我有几个选择:

1)

app/models/bucket -> Bucket
app/models/bucket/items_calculator -> Bucket::ItemsCalculator
app/models/bucket/shipping_cost_calculator -> Bucket::ShippingCostCalculator

2)

app/models/bucket -> Bucket
lib/bucket/items_calculator -> ItemsCalculator
lib/bucket/shipping_cost_calculator -> ShippingCostCalculator

3)

app/models/bucket -> Bucket
lib/bucket/items_calculator -> Bucket::ItemsCalculator
lib/bucket/items_calculator -> Bucket::ShipingCalculator

您更喜欢哪种版本?

1 个答案:

答案 0 :(得分:2)

模型应该处理应用程序的业务逻辑。模型不需要从ActiveRecord::Base继承为模型。所以这些计算器类听起来像我的模型。

所以我认为他们进入app/models。但它们是否适用于任何一般方式?或者他们适用于Bucket?如果它们仅适用于Bucket,则选项1有意义。

但如果它们适用于其他型号,或者可以单独使用,我可能会建议:

app/models/bucket -> Bucket
app/models/items_calculator -> ItemsCalculator
app/models/shipping_cost_calculator -> ShippingCostCalculator

但我的预感是你想要选项1。