Rails 4,ActiveRecord,查找当前用户未评论的所有帖子

Posted

技术标签:

【中文标题】Rails 4,ActiveRecord,查找当前用户未评论的所有帖子【英文标题】:Rails 4, ActiveRecord, find all posts that are not commented by current user 【发布时间】:2016-03-12 00:40:15 【问题描述】:

正如标题所暗示的那样,寻找正确的 ActiveRecord 语法来查找 Devise current_user 尚未在其中发表评论的所有帖子...我尝试搜索类似内容,但找不到任何内容。请注意微妙的请求 - 我不是在寻找所有没有 cmets 的帖子,而是在寻找 current_user 没有发表评论的所有帖子。希望有人能帮忙!

Post has_many Comments,Comment belongs_to Post。

提前致谢!

【问题讨论】:

其他人有什么想法吗?想看看其他选择。谢谢! 【参考方案1】:

您有关于用户评论了哪些帖子的信息,因此您基本上只需搜索“其他”帖子。

class User
  has_many :comments
end

class Post
  has_many :comments

  scope :not_commented_by, ->(user)  
    where.not(id: user.comments.select('post_id as id'))
  
end

# in a controller
def index
  @posts = Post.not_commented_by(current_user)
end

【讨论】:

在 Post 模型中出现语法错误 - 在(用户)处 -> 嗯仍然看到错误。它突出显示 -> 和 之间的空间 已修复。再试一次。抱歉,我来晚了。

以上是关于Rails 4,ActiveRecord,查找当前用户未评论的所有帖子的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rails ActiveRecord 查询接口查找 a 的平均数量在两个模型之间有很多关联

禁用 Rails 4 的 ActiveRecord

在Rails 4.1中,如何通过枚举符号查找记录?

优化 Rails 急切加载查询以查找所有

markdown 禁用ActiveRecord for Rails 4,5

Rails 6.1.4 中的 ActiveRecord 枚举行为更改