我正在创建一个适用于多种运动的日志应用程序(例如水肺潜水和跳伞),我正试图找到一种方法让孩子模型不仅继承父方法,还继承父(数据库)列。
图像可以更好地解释: Logbook database sample
因此,ScubaDiving,FreeDiving和SkyDiving类别下的任何模型都是我将从视图中调用的模型。
然而,父或潜水下的模型永远不会被调用,并且只是用他们的孩子填充数据库列(或许可能是方法)。
创建模型+关联+继承的最佳方法是什么?
从我所做的研究中,我读过:
我正在使用Rails 5和PostGresql数据库。
答案 0 :(得分:0)
- 单表继承:
醇>
- 只传递父方法,而不是数据库列
当然所有类都继承数据库列。因为所有课程都是"生活"在同一个表中,它们具有相同的列。由于另一个原因,STI可能不是你的情况下最好的解决方案 - 每个模型的列似乎都不同,所以你会有一堆列是" NULL"对于没有这些列的模型。
我建议考虑为每个类创建一个模型/表,然后将子对象链接到表示父对象的对象。然后,您可以将名称,位置等方法委派给Spot。然后,您可能需要使用多态关联。你可能有点花哨,试试"正确" MTI,请参阅this guide