2

私は mongodb/mongoid に非常に慣れていないため、ユーザーが製品をレビューできるようにするシステムを構築する最善の方法について疑問に思っていました。ユーザーと製品は個別のコレクションになります。ただし、作成したレビューをユーザー ページと製品ページの両方に表示するには、両方ともレビュー モデルにアクセスする必要があります。リンクされた 1 (製品) -N (レビュー) の関係と、埋め込まれた 1 (ユーザー) - 1 (レビュー) の関係を作成する必要がありますか? これはこれを行う正しい方法ですか?

ユーザーモデル

class User
  include Mongoid::Document

  field :name, type: String
  field :email, type: String

  embeds_many :reviews, cascade_callbacks: true
end

製品モデル

class Product
  include Mongoid::Document

  field :name, type: String
  field :price, type: Float

  has_many :reviews, dependent: :destroy
end

モデルのレビュー

class Review
  include Mongoid::Document

  field :rating, type: Integer

  belongs_to :product
  embedded_in :user
end

ありがとう

4

1 に答える 1

0

埋め込みドキュメントに直接アクセスできず、製品とレビューの間に参照関係を作成できないため、モデル構造を定義する正しい方法ではありません。正しい構造は

ユーザーモデル

class User
  include Mongoid::Document

  field :name, type: String
  field :email, type: String

  has_many :reviews, dependent: :destroy
end

製品モデル

class Product
  include Mongoid::Document

  field :name, type: String
  field :price, type: Float

  has_many :reviews, dependent: :destroy
end

モデルのレビュー

class Review
  include Mongoid::Document

  field :rating, type: Integer

  belongs_to :product
  belongs_to :user
end
于 2012-11-20T06:52:54.200 に答える