-2

とのReviewモデルでポリモーフィックアソシエーションを使用しています。ただし、レビューごとに所有者を設定することも理にかなっています。UserPost

所有者とは、関連するuserモデルを意味します。しかし、ユーザーは他のユーザーからのレビューやレビューを行うことができるため、これはテーブルに問題をもたらします

最善の方法は何ですか。ソリューションのアイデアは大歓迎です。

Review.rb

belongs_to :reviewable, polymorphic: true
belongs_to :user # owner of the reviews

User.rb

  # reviews from others
  has_many :reviews, as: :reviewable, dependent: :destroy 
  has_many :reviews  # user written reviews

Post.rb

  has_many :reviews, as: :reviewable, dependent: :destroy
4

1 に答える 1

1

明らかな問題は、Userモデルに同じ名前の関連付けが 2 つあることです。簡単な修正の 1 つは、そのうちの 1 つの名前を変更することです。同様のポリモーフィックな関連付けに一致する関連付けがPost既にあるため、ユーザーが書いたレビューの名前を次のように変更できます。reviewsreviews

has_many :reviews_by_me, class_name: 'Review'

クラス名を指定することで、Rails は残りの情報を推測し、あなたの で一致する正しいReviewオブジェクトを取得できます。user_idUser

于 2013-01-28T15:18:43.057 に答える