Rails协会通过而不是HABTM

时间:2015-04-26 05:44:58

标签: ruby-on-rails ruby activerecord

我对rails和ActiveRecord相当陌生,我正试图找到正确的数据建模方法。

我正在构建一个应用程序,让游泳教练制定一个课程计划,显示他们将教授他们的课程的技能以及他们将用于教授每项技能的活动。计划可以包含许多技能,每个技能可以包含许多与之相关的活动。

在计划表单上有一个技能活动组合的小部件。在其中,用户应该能够从下拉列表中选择技能,并且所选技能从列表中选择多个活动。这个小部件可以在表单上重复任意次。

我目前的模特:

Class Plan
  has_many :plan_activities
end

Class PlanActivities
  belongs_to :plan
  belongs_to :skill
  has_and_belongs_to_many :activities
end

Class Skill
end

Class Activity
end

这个型号是否正确?我的问题是accepts_nested_attribtues_for不适用于HABTM关联。我已经读过,我可以用has_many替换它:,但这意味着在图片中添加另一个连接模型。这看起来有点太难看了。有更好的方法吗?

编辑:

我的技能和活动采用列表形式,我应该能够在多个计划中包含相同的技能和/或活动。

1 个答案:

答案 0 :(得分:0)

你的模特非常接近。这里的一个改进是完全删除PlanActivities模型。只需将协会直接放在计划上即可。在这一点上,我不认为额外的模型是合理的。我们这里有一个非常基本的金字塔结构。在顶部是具有许多技能的计划,每个技能都有许多活动,因此更简单的模型看起来像:

SYSTEM_INFO

连接模型是一个选项,但在这里并不是完全必要的。 Plan.activities将为您创建所需的连接表。