Ruby on rails rails的问题包括查询

Ruby on rails rails的问题包括查询,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我对此不知所措,终身无法理解:| 下面,@selected_posts表示对posts的查询。我想查询在@selected\u posts中有帖子的排序用户。目前,使用下面的代码,我将返回用户表中所有用户的正确用户列表。我会得到Mike,5-Joe,3-John,0-Jack,0--零表示它正在查询每个用户(这将是一个问题。关于如何修复下面的代码,使其只查询在@选定的\u posts中有帖子的用户,有什么建议吗 @posts = user.includes(@selected_posts).ma

我对此不知所措,终身无法理解:|

下面,
@selected_posts
表示对
posts
的查询。我想查询在
@selected\u posts
中有帖子的排序用户。目前,使用下面的代码,我将返回用户表中所有用户的正确用户列表。我会得到Mike,5-Joe,3-John,0-Jack,0--零表示它正在查询每个用户(这将是一个问题。关于如何修复下面的代码,使其只查询在
@选定的\u posts
中有帖子的用户,有什么建议吗

@posts = user.includes(@selected_posts).map{ |user|

  [user.name, user.posts.count, user.username]

}.sort

多亏了你的帮助,我才欠你的债(你不知道这让我有多疯狂)

据我所知,你有模型:Post和User。User可以有很多帖子。你的目标是获得所有有帖子的用户。你可以用不同的方式来做。例如:在User model中定义作用域

scope :with_posts, -> { joins(:posts) }

还没有测试过它,但这不是更符合:

@users = User.joins(:posts).where(:posts => {:category => "Baseball"})
只是为了完整性,因为我喜欢结果:

@users = Post.where(:category => "one").group(:user).count

将为您提供一个OrderedHash,其中用户作为键,postcount作为值。

需要有关@selected_posts中内容的更多信息…
@selected_posts=posts。其中(:category=>“basketball”)
我在
帖子
用户之间设置了多对多设置
好的,我不知道你可以在这样的包含中放置一个ActiveRelation。包含是左连接类型的查询,也许你需要使用连接?为什么是多对多?一篇帖子可以由多个用户创建吗?看起来应该是:用户有多个Posts/Post属于UserWell,close。我正在尝试获取在我的
@selected\u posts
查询中包含帖子的所有用户,该查询为
@selected\u posts=posts。其中(:category=>“basketball”)
我想查询每个用户在该类别中的帖子数量。我的问题是,我在OP中的代码是查询数据库中的每个用户,而不仅仅是在
@selected_posts
中有帖子的用户,正如您所理解的,对于很多用户,根据一个类别或一组对象查询每个用户可能会很费力。因此,请尝试:
@selected\u posts=posts.where(:category=>“basketball”)
,然后:
User.with\u posts(@selected\u posts)
,并将作用域重写为
scope lambda{post\u query{posts.post\u query}
。我认为它应该会起作用。无论如何?现在你有更多的猜测:)。好运气这正是我要找的。然而,“棒球”只是一个例子。我真正想要的是在
@selected\u posts
中使用一组帖子。有什么办法吗?非常感谢@masedesign:我不确定我是否100%理解你想要做什么。您是否需要先查询
@选定的_posts
并使用结果,还是可以将所有内容都放到一个查询中,然后您主要希望添加分组并说计数posts的数量(带有某些附加条件,如类别)?