0

鑑於模型的has_many通過與現有的對象關聯/ ActiveRecord的

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") 

其結果將是與內容「你好」的組成,用文字標籤「#hi」創建了。

然後我再創建一個構圖。

Composition.create(content: "Goodmorning") 

現在我不知道並且想要做的就是將它與現有的標籤相關聯,並帶有文本「#hi」。

我該如何以最優雅的方式做到這一點?

回答

1

如果你在你創建你的記錄,你可以創建標籤,然後在同一行創建兩個成分的順序靈活:

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