Mongoid Polymorphic Association Rails

时间:2017-03-20 10:03:41

标签: ruby-on-rails ruby mongodb mongoid polymorphic-associations

工作环境: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对象?

谢谢!

1 个答案:

答案 0 :(得分:0)

我已根据以下link

中的以下答案成功实施了一个非优雅的工作解决方案