我有一个奇怪的问题,似乎无法在任何地方找到答案。我正在构建一个小型 Ruby on Rails 应用程序来计算电费。
为此,我需要知道一个人的关税是多少,这对于正常关税来说是可以的。 (例如,通常人们白天和黑夜的每千瓦成本都是固定的 => 包含每种关税类型静态数据的关税表)
但我的问题是有些人现在使用所谓的动态关税。所以基本上每小时成本都会根据电网的总体需求而上升或下降。所以现在我同时拥有静态关税数据和动态关税数据。
我在想这样的事情:
客户表 => ID、姓名、TariffID 等等
关税表 => ID,类型
静态关税表 => ID、每千瓦成本、TariffID 等
动态关税表 => ID、每千瓦成本、时间戳、TariffID
然后根据关税表中的关税类型,我会知道使用静态表还是动态表。
此外,我需要记录每个动态关税的时间戳,以计算一天中每小时的成本与一天中每小时的用电量,但我不需要静态关税;)
对我来说这看起来有点沉重,我想知道是否有人可以提出更微妙的解决方案?
提前致谢
谢默斯
最佳答案
您可能想继续阅读 Single Table Inheritance - 这似乎是一个很好的用例。
在这个 Stack Overflow question 中有很多关于它的好信息
您似乎想要一个关税表、一个包含所有通用代码的 Tariff 类,然后是一个继承自 Tariff 的 StaticTariff 和 DynamicTariff 类。这样,您可以覆盖子类中的方法来计算每小时成本。 StaticTariff 很容易,因为它可能会返回数据库中的列值,而 DynamicTariff 可能需要根据日期/时间进行计算。
两者之间的任何共享代码都可以安全地放置在您的父 Tariff 类中,您应该在路上。
关于ruby-on-rails - 数据库 - 动态表选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750171/