0

我正在开发一个小应用程序来显示一些图片。每张图片都可以按 1 到 5 的等级“投票”或“合格”。

只能对已登录的用户进行一次资格认证。

我需要知道每个图像的资格,以及用户设置投票的图像(并知道该投票的价值),所以我创建了这个模型:

class Voto
    include Mongoid::Document
    embedded_in :picture
    embedded_in :user
    field :value, :type => Integer
end

class Picture
    include Mongoid::Document
    embeds_many :votos
    embeds_many :comments
    belongs_to  :user
    ...
    ...
end

class User
    include Mongoid::Document
    ...
    ...
    has_many :pictures
    embeds_many :votos
end

但我不知道这是否正确。¿ 我可以将相同的模型(在本例中为 Voto)存储在两个不同的文档(图片和用户)中吗?

知道如何实现这一目标吗?

4

1 回答 1

0

您可以通过使用多态标志来做到这一点(见http://mongoid.org/en/mongoid/docs/relations.html#common Polymorphism)

class Voto
    include Mongoid::Document
    embedded_in :voteable, , polymorphic: true
    field :value, :type => Integer
end

class Picture
    include Mongoid::Document
    embeds_many :votos, as: :voteable
    embeds_many :comments
    belongs_to  :user
    ...
    ...
end

class User
    include Mongoid::Document
    ...
    ...
    has_many :pictures
    embeds_many :votos, as: :voteable
end
于 2012-09-25T15:53:25.983 回答