我在我的Review
模型上使用多态关联来User
和Post
。但是,每次评论都有一个所有者也是有意义的。
通过所有者,我的意思是关联的user
模型。但这带来了问题,因为用户可以查看并有其他用户的评论
最好的方法是什么。欢迎任何解决方案的想法。
评论.rb
belongs_to :reviewable, polymorphic: true
belongs_to :user # owner of the reviews
用户.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
明显的问题是,User
模型中有两个同名的关联。一个简单的解决方法是重命名其中一个。由于您的Post
已经具有与类似reviews
多态关联匹配的reviews
关联,因此您可以将用户撰写的评论重命名为如下所示:
has_many :reviews_by_me, class_name: 'Review'
通过指定类名,Rails 可以推断出其余信息,并为您提供user_id
与User
匹配的正确Review
对象。