0

私はいくつかの写真を表示する小さなアプリに取り組んでいます。各写真は、1 から 5 のスケールで「投票」または「認定」できます。

資格は、ログインしているユーザーに対して 1 回だけ実行できます。

各画像の資格と、ユーザーが投票を設定した画像 (およびその投票の値を知る) を知る必要があるため、次のモデルを作成します。

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) を 2 つの異なるドキュメント (Picture と User) に保存できますか?

これを達成する方法はありますか?

4

1 に答える 1

0

ポリモーフィック フラグを使用してこれを行うことができます ( http://mongoid.org/en/mongoid/docs/relations.html#commonポリモーフィズムを参照) 。

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 に答える