gpt4 book ai didi

ruby-on-rails - Activerecord has_many :through through multiple models

转载 作者:行者123 更新时间:2023-12-04 08:56:20 25 4
gpt4 key购买 nike

我正在尝试使用 user.comments 访问给定用户的所有评论.查询将通过两个不同的模型,这两个模型可能都返回结果。我的关系设置如下:

class User < ActiveRecord::Base
has_many :organisers
has_many :participants
has_many :comments, through: :participants / :organisers (see explenation below)
end

class Organiser < ActiveRecord::Base
belongs_to :user
end

class Participant < ActiveRecord::Base
belongs_to :user
end

class Comment < ActiveRecord::Base
belongs_to :organiser
belongs_to :participant
end

评论被验证为属于参与者或组织者。

我不知道该怎么做。我试过了
has_many :comments, through: :participants
has_many :comments, through: :organisers


has_many :comments, through: [:organisers, :participants]

但最后一个不是 rails 。有没有合适的方法来做到这一点?谢谢!

最佳答案

has_many :comments, ->(user) {
unscope(where: :user_id).
left_joins(:organizer, :participant).
where('organizers.user_id = ? OR participants.user_id = ?', user.id, user.id)
}
unscope是删除 comments.user_id = ?子句(在定义 has_many 关系时默认添加)。 left_joins被调用 Comment ,因此您需要传入 Comment 上定义的关系名称,因此在这个例子中是单数。

关于ruby-on-rails - Activerecord has_many :through through multiple models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749740/

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