在Rails中只能有一个孩子的父模型?

时间:2011-09-21 19:20:01

标签: ruby-on-rails ruby-on-rails-3 activerecord

对不起,标题很不清楚 - 我只是不确定如何在没有解释的情况下说出问题。

我想用我的应用记录锻炼。我想要一个具有日期和sub_workout_type_id

等基本信息的锻炼表(我称之为父母)

锻炼记录可以是心血管锻炼(一种模型)或强度锻炼(另一种模型)。

我的想法有3个桌子而不是2个Cario锻炼模型和力量训练模型,我可以拉动锻炼记录,然后根据需要深入挖掘任何类型的锻炼。 / p>

也许有更多红宝石的方法来做到这一点?因为现在我不知道怎么说has_one_model_or_the_other。谢谢!

2 个答案:

答案 0 :(得分:2)

我看到两个选项,要么你使用STI(单表继承):在这种情况下,你将有一个表能够包含心血管模型或力量训练,以及类型。这只有在两个模型具有一些共同特征时才有效。

另一种解决方案是编写类似

的内容
has_one :cardiovascular
has_one :strength

然后使用验证来强制只设置其中一个。

希望这有帮助。

答案 1 :(得分:0)

如@nathanvda所述,STI可能是一个不错的选择。

如果您希望在模型中存储类特定数据,可以查看Modeling inheritance with Ruby/Rails ORMs以查看该答案是否为您提供了有关如何建模此关系的任何建议。

注意,那里的示例使用has_many,但很多想法都很相似。