我试图在某些情况下使用模型的自定义名称定义一系列模型关系,而在其他情况下,它是本机名称。此外,模型可以由多个类引用,这需要多态关系。
以下模型被简化(我删除了字段,其他关系等),但它们例证了我试图生成的结构,同时避免创建继承模型。
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:
,但是如何定义这些值而无需显式定义关联的类?
答案 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
希望它有所帮助!