工作环境:Rails 4.2 mongoid 5.1
以下是我的模特:
class Tag
include Mongoid::Document
include Mongoid::Timestamps
field :name, type: String
belongs_to :entity_tags, :polymorphic => true
end
class EntityTag
include Mongoid::Document
include Mongoid::Timestamps
field :tag_id, type: String
field :entity_id, type: String // Entity could be Look or Article
field :entity_type, type: String // Entity could be Look or Article
field :score, type: Float
end
class Look
include Mongoid::Document
include Mongoid::Timestamps
has_many :tags, :as => :entity_tags
end
class Article
include Mongoid::Document
include Mongoid::Timestamps
has_many :tags, :as => :entity_tags
end
我们正在尝试在“外观”和“文章到标记”之间实现多态功能。
即。假设我们有一个名为“政治”的标签,我们希望将标签添加到评分为“0.9”的文章中,并添加到评分为“0.6”的文章中。分数应保存在EntityTags模型中。
问题: 标签的第一次分配有效,但是当我尝试将同一标签分配给另一个实体时,它将其删除并将其从第一个重新分配给后者。
分配如下所示:
entity.tags << tag
是否有人知道保存关联的正确方法并使用正确的多态性和正确分配创建EntityTag对象?
谢谢!