Rails -HAS_MANY:通过 - 以一种形式创建新记录和关联



我目前正在与has_many:通过我的项目中的关联。协会的基础如下:

class Course < ActiveRecord::Base
    has_many :contents
    has_many :topics, :through => :contents
end
class Topic < ActiveRecord::Base
    has_many :contents
    has_many :courses, :through => :contents
end
class Content < ActiveRecord::Base
    belongs_to :courses
    belongs_to :topics
end

可能不能更基础。

因此,想法是用户可以创建许多课程,也可以创建许多主题。主题与内容类通过课程相关联。这样做意味着用户可以创建许多主题并将其与许多课程相关联。太好了,当课程主题重叠时,可以节省用户再次输入批次。这一切都很好,花花公子。

但是,我希望用户首先创建一个课程,然后从那里为该课程创建许多新主题。对我来说似乎是逻辑的。

我的问题是我正在努力解决这个问题的最佳方法吗?

我可以用:通过关联并拥有一个基本主题属于课程协会,因为这会做我想要的,但以我想要的额外功能为代价。

我正在沿着forns_ for for content的for topem_的台词进行思考吗?我不禁认为这是一个常见答案的常见问题,但无法在Interweb上找到答案。也许是我的措辞。希望这对某人完全有意义。

预先感谢

我会从某种程度上一般的角度写(但是使用您描述的模型),因为它不仅与您所描述的情况有关,而且与您的任何时间有关使用has_many :through建立在多一关系中的新关联。

在Rails中,这是创建新的Topic对象的简单示例,该对象与course相关联:

@course.topics << Topic.new(params[:topic])

以上假设您以前已经加载了Course对象并将其存储在@course中。它还假设Topic数据来自表单,并存储在:topic密钥下的参数图中。

如果您在执行此部分时检查日志,因为您正确设置了关联,则应看到两个插入语句:INSERT INTO "topics"...INSERT INTO "contents"...

还有其他方法(有些比其他方法要多得多)可以做到这一点,但我相信这是最直接的。

让我知道这是否有意义。

相关内容

  • 没有找到相关文章

最新更新