给定模型
class Composition < ActiveRecord::Base
attr_accessible :content
has_many :compositions_tags
has_many :tags, :through => :compositions_tags
end
class Tag < ActiveRecord::Base
attr_accessible :text
has_many :compositions_tags
has_many :compositions, :through => :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”相关联。
我如何以最优雅的方式做到这一点?
答案 0 :(得分:1)
如果您对创建记录的顺序很灵活,可以创建标记,然后在一行中创建两个合成:
Tag.create(text: "#hi").compositions.create([{content: "Goodmorning"},{content: "Hello"}])