gpt4 book ai didi

ruby-on-rails - 一个模型中相同类型的多个多态关系 - MongoID

转载 作者:可可西里 更新时间:2023-11-01 10:03:51 26 4
gpt4 key购买 nike

我不知道如何正确使用标题,所以让我解释一下。

我有我的课喜欢:

class Like
include Mongoid::Document
belongs_to :likable, polymorphic: true
belongs_to :user
end

class Submission
include Mongoid::Document

belongs_to :creator, class_name: 'User', inverse_of: :submissions
has_many :likes, :as => :likable, :dependent => :destroy
end

然后是导致问题的类:

class User
include Mongoid::Document
has_many :submissions, :dependent => :destroy

has_many :liked_submissions, :as => :likable, :dependent => :destroy, class_name: 'Like'
has_many :liked_comments, :as => :likable, :dependent => :destroy, class_name: 'Like'
end

现在,问题是我不知道如何在用户类中正确地同时拥有“喜欢的评论”和“喜欢的评论”。当我像上面那样得到它时,我收到错误:不明确的关系:liked_submissions,:liked_comments defined on User. 当试图为提交创建一个喜欢时。

我环顾四周,发现一个 Github issue 说这可能是不可能的,但我又找不到这个 issue,我什至不确定它是否与这个 issue 有关。

这是否可能,如果不可能,有什么绕过它的建议吗?我也想在 BlogPost 模型中使用点赞,但如果这不起作用,我将不得不寻找另一种方法。

提前致谢。

最佳答案

我试过了,它可以使用 mongoid 版本 4.0.2:

class Like
include Mongoid::Document

belongs_to :likable, polymorphic: true
belongs_to :user, inverse_of: :user
end

class Submission
include Mongoid::Document

belongs_to :creator, class_name: 'User', inverse_of: :submissions
has_many :likes, as: :likable, dependent: :destroy
end

class User
include Mongoid::Document

has_many :submissions, dependent: :destroy

has_many :likes, as: :user
has_many :liked_submissions, as: :likable, dependent: :destroy, class_name: 'Like'
has_many :liked_comments, as: :likable, dependent: :destroy, class_name: 'Like'
end

class BlogPost
include Mongoid::Document

has_many :likes, as: :likable, dependent: :destroy
end

另外 user.liked_submissionsuser.liked_comments 是相同的关系,所以它等同于声明这样的别名:

class User
include Mongoid::Document

has_many :submissions, dependent: :destroy

has_many :likes, as: :user
has_many :liked_submissions, as: :likable, dependent: :destroy, class_name: 'Like'

alias :liked_comments :liked_submissions
end

关于ruby-on-rails - 一个模型中相同类型的多个多态关系 - MongoID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com