所以说我的关系如下。
class TextbookAssociation < ActiveRecord::Base
belongs_to :textbook
belongs_to :course
end
class Textbook < ActiveRecord::Base
has_many :textbook_associations
has_many :courses, through: :textbook_associations
end
class Course< ActiveRecord::Base
has_many :textbook_associations
has_many :textbooks, through: :textbook_associations
end
如果我在各自的表中已经有数据库中的教科书和课程,有没有办法链接它们?
我知道如何做的唯一方法是在创建其中一个对象时。假设我有一门课程,然后为我的课程制作一本教科书
course.textbooks.build(params)
course.save;
这将创建教科书并将其链接到TextbookAssociation表中的课程。
但是如果课程和教科书已经存在呢?我通过在线搜索找不到任何内容。
答案 0 :(得分:4)
当我试图找到如何做到这一点时,我搜索了互联网,以了解如何查询如“Rails如何链接多对多关系中的两个记录”。所有结果都提出了如何在模型中实际建立关系,而不是如何使用它们。
在写这个问题时,我随机回忆了数组的<<
运算符。我不记得它到底做了什么,但我认为它附加到一个数组然后我只需要保存它。所以我试了一下。
course.textbooks << textbook
我发现这实际上是将教科书添加到关联中并将其全部保存在一起。而已。简单!我只是希望我能在Google上找到一些相关信息。
稍后我查找了CollectionProxy
的文档,并在此处找到了<<
运算符:RoRDocs
我应该早点看到那里,但作为一个Rails newb我没有想到它。
我希望这个问题会出现在一些谷歌搜索结果中,这样可以帮助一些像我这样苦苦挣扎的人。