Rails关联has_many通过代替HABTM

中国

我对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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails关联has_many通过代替HABTM

来自分类Dev

Rails,如何通过删除has_many中的关联

来自分类Dev

奇怪的问题has_many通过更新的Rails中的关联

来自分类Dev

has_many的Rails触摸链:通过关联

来自分类Dev

通过has_many关联进行Rails作用域

来自分类Dev

rails 4 has_many:通过不保存关联

来自分类Dev

Rails 4:通过has_many关联创建新记录

来自分类Dev

Rails 5 Postgresql has_many通过关联

来自分类Dev

通过关联的has_many的Rails渲染JSON

来自分类Dev

通过has_many关联进行Rails作用域

来自分类Dev

通过Rails 4中的关联使用has_many

来自分类Dev

Rails通过关联删除has_many

来自分类Dev

Rails has_many通过关联继承问题

来自分类Dev

Ruby on Rails has_many:通过多态关联

来自分类Dev

Rails关联has_many通过不使用多个模型

来自分类Dev

rails has_many:通过关联不起作用

来自分类Dev

Rails 5.1 has_many 通过 - 关联字段

来自分类Dev

Rails has_many 通过关联问题

来自分类Dev

Rails关联has_many和has_many通过相同的STI模型

来自分类Dev

has_many,通过Ecto中的关联

来自分类Dev

has_many:通过不保存关联

来自分类Dev

has_many:通过关联

来自分类Dev

Has_many rails关联=> NoMethodError

来自分类Dev

Rails 5 可选的 has_many 关联

来自分类Dev

Rails 4:结合has_many:通过关联与多态关联

来自分类Dev

绝对坚持尝试通过has_many通过rails形式创建嵌套关联

来自分类Dev

Rails / ActiveRecord has_many通过:未保存对象上的关联

来自分类Dev

Rails 4嵌套属性和has_many:通过关联形式

来自分类Dev

Rails 4通过以下方式找不到关联has_many:关系错误