gpt4 book ai didi

ruby-on-rails - 在 has_many 关系上应用条件

转载 作者:行者123 更新时间:2023-11-29 11:50:08 24 4
gpt4 key购买 nike

我在使用 rails 4.1.8 从 Postgre 数据库中检索一些数据时遇到问题

让我们考虑两个具有 has_many 关系的模型

class Post < ActiveRecord::Base
has_many :comments
end

class Comment < ActiveRecord::Base
belongs_to :post
end

评论的状态为approvedcensured

我想在Post模型中写一个方法self.all_comments_approved

我想不出如何只有所有评论都获得批准的帖子。我想写这样的东西(不是工作示例):

def sef.all_comments_approved
joins(:comments).where("ALL(comments.state = 'approved')").references(:comments)
end

在此先感谢您的帮助:)

最佳答案

您可以尝试将 joinsgrouphaving 语句一起使用,但是您获得的关系将非常脆弱(您不会能够随心所欲地进一步查询它 - pluck 会完全破坏它等)。

解决这个问题的方法是将它分成两个数据库调用:

def self.all_comments_approved
non_approved_ids = joins(:comments).where.not(comments: {state: 'approved'}).uniq.pluck(:id)
where.not(id: non_approved_ids)
end

关于ruby-on-rails - 在 has_many 关系上应用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838407/

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