gpt4 book ai didi

ruby-on-rails - 预加载(包括)多态关联

转载 作者:行者123 更新时间:2023-12-05 07:41:40 26 4
gpt4 key购买 nike

考虑以下多态关系:

class Comment
belongs_to :commentable, polymorphic: true
end

class User
has_many :posts
has_many :groups
end

class Group
belongs_to :user
has_many :comments, as: :commentable
end

class Post
belongs_to :user
has_many :comments, as: :commentable
end

本质上,用户有post 评论和group 评论。我想返回用户总评论。实现这一目标的一种方法是:

posts = @user.posts.map {|c| c.comments}.flatten
groups = @user.groups.map {|c| c.comments}.flatten

但是,这是数据库密集型的。可以像这样预先加载:

Comment.includes(:commentable).where(commentable: {user_id: self.id})
# ActiveRecord::EagerLoadPolymorphicError: Cannot eagerly load the polymorphic association :commentable

最佳答案

Comment.where(commentable: @user.posts).or(Comment.where(commentable: @user.groups))

关于ruby-on-rails - 预加载(包括)多态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45227839/

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