这是我的用例:
我收集了一个完整的从 CSV 文件导入的销售税率。我创建了 Mongoid 模型来镜像字段名称(这些是不可更改的):
class SalesTaxRate
include Mongoid::Document
field :state, type: String
field :zip_code, type: String
field :tax_region_name, type: String
field :tax_region_code, type: String
field :combined_rate, type: Float
end
接下来,我正在构建一个用于我的应用程序的模型。假设我想创建一个名为 Location 的东西:
class Location
include Mongoid::Document
field :name, type: String
field :street, type: String
field :city, type: String
field :state, type: String
field :zip_code, type: String
end
我希望能够通过简单地调用这样的东西来获得一个位置的销售税率:
home = new Location(...)
home.sales_tax_rate
我永远不会通过 设置费率home
,只是查找它。
这样做的“正确”方法是什么?我可以想到两种方法——简单的方法似乎只是定义一个进行查找的方法,如下所示:
class Location
...
def sales_tax_rate
SalesTaxRate.where(zip_code: self.zip_code).first.combined_rate
end
这有效。但我想知道我是否应该使用belongs_to
关联,如果是,为什么以及如何最好地做到这一点。
仍然在这里学习绳索,如果这是一个新手/愚蠢的问题,请道歉。提前谢谢了!