gpt4 book ai didi

ruby-on-rails - ActiveRecord 查询 : Get Distinct Users from Posts in Category

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:05 24 4
gpt4 key购买 nike

( rails 4.1.6, ruby 2.0.0)

我有一组用户,他们在类别中发表了一系列帖子。这些帖子属于许多 类别。我想获取在该类别 中发帖的用户列表。搜索 StackOverflow,我找到了适用于单个类别的内容。

Category.find(2).posts.select(:user_id).distinct

不幸的是,当我合并类别时我无法让它工作(两个类别都存在,都有帖子):

(Category.find(2).posts | Category.find(3).posts).select(:user_id).distinct

这导致:

ArgumentError: wrong number of arguments (1 for 0)
from (irb):137:in `select'

我的主要问题是为什么这行不通?它适用于单个类别集合,并返回不同用户 ID 的列表。使用合并的集合时,它不会。还有什么我可以尝试的吗?

最终目标:我想建立一个更大的带有循环的分类帖子集合,并使用这些类别中存在的帖子吸引不同的用户。

提前致谢!

------------编辑----------------

迁移对您来说用处不大。

class User < ActiveRecord::Base

has_many :posts

end

class Post < ActiveRecord::Base

belongs_to :user #post.user_id
has_many :categories

end

class Categorization < ActiveRecord::Base

belongs_to :post #categorization.post_id
belongs_to :category #categorization.category_id

end


class Category < ActiveRecord::Base

has_many :categorizations
has_many :posts, :through=>:categorizations

end

最佳答案

这是你需要的:

Category.
joins(:posts).
where(categories: {id: [1,2]}).
pluck("DISTINCT posts.user_id")

也就是得到一个user_id数组。获取具有 user_id 属性的对象:

Category.
joins(:posts).
where(categories: {id: [1,2]}).
select("posts.user_id").
distinct

关于ruby-on-rails - ActiveRecord 查询 : Get Distinct Users from Posts in Category,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666636/

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