加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails where()sql在数组上查询

发布时间:2020-12-16 19:25:21 所属栏目:百科 来源:网络整理
导读:我会尽可能的解释这个.我有一个关于用户帖子的查询: @selected_posts = Posts.where(:category =“Baseball”) 我想写下列声明.这里是伪造的: User.where(用户在@selected_posts中有一篇文章) 请记住,我有很多关系设置,所以post.user是可用的. 有任何想法
我会尽可能的解释这个.我有一个关于用户帖子的查询:

@selected_posts = Posts.where(:category =>“Baseball”)

我想写下列声明.这里是伪造的:

User.where(用户在@selected_posts中有一篇文章)

请记住,我有很多关系设置,所以post.user是可用的.

有任何想法吗?

/编辑

@posts_matches = User.includes(@selected_posts).map{ |user|

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

    }.sort

基本上,我需要上面的工作,所以它使用的用户在selected_posts中发布,而不是我们在我们的数据库中的每个用户.

解决方法

只需使用以下内容:
User.find(@selected_posts.map(&:user_id).uniq)

这将从所有选定的帖子中获取用户ID,将其转换为数组,并删除任何重复项.将数组传递给用户将只找到具有匹配ids的所有用户.问题解决了.

要将此与您在问题中显示的内容相结合,您可以写:

@posts_matches = User.find(@selected_posts.map(&:user_id).uniq).map{ |user|
  [user.company_name,user.posts.size,user.username]
}

使用大小来计算一个关系,而不是计数,因为Rails缓存大小方法,并且自动不会多次查找.这是更好的性能.

不确定您在查询结尾时使用Array#排序完成哪些操作,但您可以随时执行以下操作:

@users_with_posts_in_selected = User.find(@selected_posts.map(&:user_id).uniq).order('username DESC')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读