has_many通过与现有对象/ ActiveRecord的关联

给定模型

class Composition  :compositions_tags end class Tag  :compositions_tags validates_uniqueness_of :tag, only: [:create, :update], message: "already taken" end class CompositionsTag < ActiveRecord::Base belongs_to :composition belongs_to :tag end 

现在,例如我

 Composition.create(content: "Hello").tags.create(text: "#hi") 

结果将是具有内容“Hello”的组合和已创建文本“#hi”的标签。

然后我再创一个作文。

 Composition.create(content: "Goodmorning") 

现在我不知道和想要做的是将其与文本“#hi”的现有标签相关联。

我该如何以最优雅的方式做到这一点?

如果您对创建记录的顺序很灵活,则可以创建标记,然后在一行中创建两个合成:

 Tag.create(text: "#hi").compositions.create([{content: "Goodmorning"},{content: "Hello"}])