gpt4 book ai didi

ruby-on-rails - 如何向include生成的JOIN添加附加条件?

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

我想向 LEFT OUTER JOIN 添加其他条件由 :include 生成ActiveRecord 中的选项发现者。

class Post
has_many :comments
end

class Comment
belongs_to :post
has_many :comment_votes
end

class CommentVote
belongs_to :comment
end

现在让我们说我想找到最后 10 个帖子及其相关评论和投票。
Post.find.all(:limit => 10, :order => "created_at DESC",
:include => [{:comments => :comment_votes])

我无法添加条件来检查投票,因为它会忽略没有投票的帖子。因此,条件必须转到为 comment_votes 生成的 JOIN 的 ON 子句。 .我希望有一种语法,例如:
Post.find.all(:limit => 10, :order => "created_at DESC",
:include => [{:comments => [:comment_votes, :on => "comment_votes.vote > 0"])

你以前遇到过这样的问题吗?您是否设法使用当前查找器解决了问题?我希望听到来自社区的一些有趣的想法。

PS:我可以编写一个连接 SQL 来获得预期的结果并将结果拼接在一起。我想确保在走这条路之前没有其他选择。

最佳答案

如果我正确地关注你的问题,这样的事情可能会奏效:

class Comment
belongs_to :post
has_many :comment_votes
has_many :up_votes, :class_name => "CommentVote", :conditions => "vote > 0"
end

那么你的发现者将是:
Post.find.all(:limit => 10, :order => "created_at DESC",
:include => {:comments => :up_votes})

注意:我没有测试这个。

关于ruby-on-rails - 如何向include生成的JOIN添加附加条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482132/

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