我对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替换它:,但这意味着在图片中添加另一个连接模型。看起来有点太丑了。有一个更好的方法吗?
编辑:
我的技能和活动是列表形式,我应该能够在多个计划中包含相同的技能和/或活动。
您的模型非常接近。这里的一项改进是完全删除PlanActivities模型。仅将协会直接纳入计划中。在这一点上,我认为额外的模型是没有道理的。我们这里有一个相当基本的金字塔结构。最上面是具有很多技能的计划,每个技能都有很多活动,因此一个简单的模型如下所示:
class Plan
has_many :plan_skills
has_many :activities, through: :plan_skills
end
class Skill
has_many :activities, through: plan_skills
has_many :plan_skills
end
class PlanSkill
belongs_to :plan
belongs_to :skill
has_many :activities
end
class Activity
belongs_to :plan_skill
end
联接模型是一个选项,但在此并非完全必要。Plan.activities将为您创建所需的联接表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句