如何使用Mongoid建模多态自定义名称关系

时间:2011-11-14 18:49:28

标签: ruby-on-rails ruby mongoid models relationships

我试图在某些情况下使用模型的自定义名称定义一系列模型关系,而在其他情况下,它是本机名称。此外,模型可以由多个类引用,这需要多态关系。

以下模型被简化(我删除了字段,其他关系等),但它们例证了我试图生成的结构,同时避免创建继承模型。

class Gallery
  include Mongoid::Document
  embedded_in :galleryable, polymorphic: true
end

class App
  include Mongoid::Document
  embeds_one  :about, class_name: 'Gallery', inverse_of: :galleryable
  embeds_one  :portfolio
end

class Portfolio
  include Mongoid::Document
  embedded_in :app
  embeds_many :galleries, as: :galleryable
end

我理解自定义关系嵌入的“子”也应该有class_name定义和inverse_of:,但是如何定义这些值而无需显式定义关联的类?

1 个答案:

答案 0 :(得分:1)

您只需要定义关联属性“:as”

  class Gallery
    include Mongoid::Document
    embedded_in :galleryable, polymorphic: true
  end

  class App
    include Mongoid::Document
    embeds_one  :about, as: :galleryable
    embeds_one  :portfolio
  end

  class Portfolio
    include Mongoid::Document
    embedded_in :app
    embeds_many :galleries, as: :galleryable
  end

希望它有所帮助!